我有下一张桌子 - 让我们称之为 - TABLE_ITEMS
id | tilte | body
________________________
0 apple red
1 orange orange
2 grapes green
3 apple green
4 apple red
现在我尝试使用两个不同的查询 -
在第一个中我想获得“body”下所有绿色的行 - 所以为了做到这一点,我使用了下一个代码:
public Cursor queryByBody(String color){
SQLiteDatabase db = dbOpen.getReadableDatabase();
Cursor c = db.query(Constants.TABLE_NAME_ITMES, null,
Constants.ITEM_BODY + "='" + color+ "'", null, null, null, null);
int x =c.getCount();
Log.d("GOT INTO DB", "COUNT IS "+ x);
return c;
}
正如你所看到的那样是变量x - 当我看到logcat时它会显示0。
我要做的另一件事是通过查看“标题”和“正文”来获取行
为了做到这一点,我使用了下一个代码:
public Cursor queryByCatAndBodyType(String title, String body){
SQLiteDatabase db = dbOpen.getReadableDatabase();
Cursor c = db.query(Constants.TABLE_ITMES, null,
Constants.ITEM_TITLE + "='" + title + "' AND " + Constants.ITEM_BODY + "='"+ body +"'", null, null, null, null);
int x =c.getCount();
Log.d("GOT INTO DB", "COUNT IS "+ x);
return c;
}
但是计数再次为0,我没有得到任何结果。
另一方面,我尝试了下一个代码 -
public Cursor queryById(int id){
SQLiteDatabase db = dbOpen.getReadableDatabase();
Cursor c = db.query(Constants.TABLE_ITMES, null,
Constants.ITEM_ID + " = " + id, null, null, null, null);
int x =c.getCount();
Log.d("GOT INTO DB", " count "+x );
return c;
}
这次我得到了一个结果。
那么前两个问题我做错了什么? 我错过了什么吗?
感谢您提供任何帮助
答案 0 :(得分:0)
原因是Android SQLite库以这种方式构建查询的方式。
尝试将第一次调用更改为query(),这样就可以了(如果没有其他问题):
Cursor c = db.query(Constants.TABLE_NAME_ITMES, null,
Constants.ITEM_BODY + "=?", new String[]{color}, null, null, null);
的修改
如果您仍有问题 - 尝试逐步移动 :
1)当你得到结果时记录目标栏的价值,这样可能会回答你的问题:
public Cursor queryById(int id){
SQLiteDatabase db = dbOpen.getReadableDatabase();
Cursor c = db.query(Constants.TABLE_ITMES, null,
Constants.ITEM_ID + " = " + id, null, null, null, null);
int x =c.getCount();
/*edited here*/ c.moveToFirst();
/*and here*/ Log.d("GOT INTO DB", " count "+x +", body "+c.getString(c.getColumnIndex( Constants.ITEM_BODY)));
return c;
}
2)尝试查询预定义值:
Cursor c = db.query(Constants.TABLE_NAME_ITMES, null,
Constants.ITEM_BODY + "=?", new String[]{"green"}, null, null, null);
3)尝试使用' like'操作者:
Cursor c = db.query(Constants.TABLE_NAME_ITMES, null,
Constants.ITEM_BODY + " like ?", new String[]{"%green%"}, null, null, null);
4)尝试使用这样的旧简单查询:
String query = "select * from " + Constants.TABLE_ITMES + " where " + Constants.ITEM_BODY + "=?";
Cursor c = db.rawQuery(query, new String[]{color});