我在sqlite表tb_expense
上使用字符串user_id
字段作为主键。我使用Contentvalues这样如何在android sqlite的where子句中使用字符串字段
ContentValues values = new ContentValues();
values.put(KEY_USER_ID, DatabaseUtils.sqlEscapeString(expense.getUser_id()));
values.put(KEY_DATE , DatabaseUtils.sqlEscapeString(date));
values.put(KEY_AMOUNT , expense.getAmount());
values.put(KEY_PARTICULARS , DatabaseUtils.sqlEscapeString(expense.getParticulars()));
values.put(KEY_PLACE, DatabaseUtils.sqlEscapeString(expense.getPlace()));
long expense_id = db.insert(TABLE_EXPENSE , null ,values);
插入插入到这个表是完美的,我能够用Log.e
打印expense_id
但问题是,同时从该表中检索;
当我从tbl_expense
没有任何条件检索整个数据时,它的工作正常。
String query = "SELECT * FROM "+TABLE_EXPENSE;
Cursor c = db.rawQuery(query,null);
上面的查询工作正常,我能够得到整个数据;
但是,当我尝试检索一个用户在where子句中使用id的费用时,它不检索任何内容。这里是我的代码
String query = "SELECT * FROM "+TABLE_EXPENSE +" WHERE "+ KEY_USER_ID+" = '"+ user.getId() +"'";
Cursor c = db.rawQuery(query,null);
和Log.e
打印查询这样
SELECT * FROM tbl_expense WHERE user_id = 'USR107672'
我想查询是正确的,也USR107672存在于数据库,因为没有在那里条款这条记录越来越。这里有什么错误?
我也使用db.query
这样
Cursor c = db.query
(
TABLE_EXPENSE,
new String[] { KEY_USER_ID, KEY_PARTICULARS , KEY_AMOUNT , KEY_DATE , KEY_PLACE },
KEY_USER_ID + " = ? " ,
new String[] { user.getId()},
null, null, null
);
尝试,但这样也没有工作。
请正确格式化您的问题 –
您得到哪个**错误**?发布你的logcat。 –
没有得到任何错误,但查询返回空记录 – user3339689