我正在尝试从SQLite数据库获取数据并从文本视图显示输出。该程序没有崩溃,但我无法显示数据。
正在获取数据,因为它们显示在日志中。
try{
SQLiteDatabase sqLiteDatabase= this.openOrCreateDatabase("User",MODE_PRIVATE,null);
sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS users (name VARCHAR,age INT(3))");
sqLiteDatabase.execSQL("INSERT INTO users (name,age) VALUES ('rob',34)");
sqLiteDatabase.execSQL("INSERT INTO users (name,age) VALUES ('Souvik',20)");
Cursor c= sqLiteDatabase.rawQuery("SELECT * FROM users",null);
int nameIndex=c.getColumnIndex("name");
int ageIndex=c.getColumnIndex("age");
c.moveToFirst();
while (c!=null){
x.add(c.getString(nameIndex));
x.add(Integer.toString(c.getInt(ageIndex)));
Log.i("name",c.getString(nameIndex));
c.moveToNext();
}
txt.setText(x.get(2));
}catch (Exception e){
e.printStackTrace();
}
答案 0 :(得分:0)
您编写了一个无休止的while
循环,因为c
不是,也永远不会是null
。
删除此行:
c.moveToFirst();
并将循环更改为此:
while (c.moveToNext){
x.add(c.getString(nameIndex));
x.add(Integer.toString(c.getInt(ageIndex)));
Log.i("name",c.getString(nameIndex));
}
我假设x
是存储结果的List
。
因此,循环结束后,您在List
中将有4个项目。
在这一行:
txt.setText(x.get(2));
您将TextView
的文本设置为List
的3d项。
当然,如果创建数据库,创建表并且INSERT
语句不失败,这将起作用。
由于您所有的代码都在try/catch
块内,因此如果出现问题,该应用程序将不会崩溃。