应用程序无法运行 - 尝试执行查询来打印特定值
Method:
public Cursor trying(String vg){
String q="SELECT quantity FROM " + TABLE_CONTACTS + " WHERE name=" + vg;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(q,null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
从 main 调用方法
Cursor wow = db.trying("gold");
text = (TextView) findViewById(R.id.textView13);
text.setText((CharSequence) (wow));
首先。由于您直接将尝试变量添加到语句中,因此变量必须用单引号引起来,或者将其解释为列。
"SELECT quantity FROM " + TABLE_CONTACTS + " WHERE name= '" + vg + "'";
第二个“大”问题,请看这里:
text.setText((CharSequence) (wow));
在这里你正在尝试投射Cursor
to CharSequence
但这是不可能的。如果您想从中检索数据Cursor
您必须在您的情况下使用 Cursor 类的 getters 方法之一获取字符串() method:
String quantity = wow.getString(0); // it returns your quantity from Cursor
text.setText(quantity);
现在应该可以了。
推荐:
我建议你使用参数化语句实际使用的是占位符在您的查询中。它们提供了更安全的方式向数据库添加数据和从数据库检索数据。
让我们重写您的代码:
String q = "SELECT quantity FROM " + TABLE_CONTACTS + " WHERE name = ?";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(q, new String[] {vg});
它的工作原理很简单。占位符?
将替换为您的字符串值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)