我在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