我有一个问题,即我有一个数据库列表来自我的数据库..我想当我点击一个项目它开始新的活动并将其余的选定项目数据显示到textviews .. 这是我的代码:
userList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
Cursor c = dataBase.rawQuery("SELECT FROM"
+DbHelper.TABLE_NAME+"WHERE"+DbHelper.KEY_ID+"="+arg3, null);
Intent i = new Intent(getApplicationContext(),BookDetails.class);
startActivity(i);
t1.setText(c.getString(c.getColumnIndex(DbHelper.KEY_NAME)));
t2.setText(c.getString(c.getColumnIndex(DbHelper.KEY_AUTHOR)));
t3.setText(c.getString(c.getColumnIndex(DbHelper.KEY_ISBN)));
t1.setText(c.getString(c.getColumnIndex(DbHelper.KEY_COPIES)));
t1.setText(c.getString(c.getColumnIndex(DbHelper.KEY_INFO)));
}
});}
但它没有用..当我点击项目时,应用程序将停止并退出! 有谁可以帮助我吗 ???? 有没有比这更好的方法呢?
谢谢
答案 0 :(得分:0)
t1.setText(c.getString(c.getColumnIndex(DbHelper.KEY_NAME))+ “”);要么 t1.setText(c.getString(c.getColumnIndex(DbHelper.KEY_NAME))的toString());
答案 1 :(得分:0)
当询问“强制关闭”问题时,请在logcat中包含异常堆栈跟踪。
这里有SQL语法问题会导致异常:
Cursor c = dataBase.rawQuery("SELECT FROM"
+DbHelper.TABLE_NAME+"WHERE"+DbHelper.KEY_ID+"="+arg3, null);
您需要指定要选择的列。 SELECT *
选择所有列
您需要在FROM
和WHERE
等关键字以及表格或列名称等标识符之间使用空格。
最好在查询中使用?
变量绑定而不是硬编码变量值。
所以,像这样:
Cursor c = dataBase.rawQuery("SELECT * FROM "
+DbHelper.TABLE_NAME+" WHERE "+DbHelper.KEY_ID+"=?", new String[] { arg3 });
另请注意,您要覆盖t1
两次的文字。但这不会导致例外。