我使用SQLiteAssetHelper创建了我的sqlite数据库,我可以很好地执行CRUD操作。但是,我无法获得以下Select语句来返回任何行:
String query = "Select * from Student where serial=?";
Cursor c = rawQuery(query, String[]{serial.trim()});
序列值最初为null,并在应用程序中更新。我的更新查询在这里:
ContentValues cv = new ContentValues();
cv.put("serial", serial.trim());
cv.put("isactivated", 1);
//This returns "1" meaning 1 row was affected
mDb.update("Student", cv, "uid=?", new String[]{String.valueOf(student.getUid())});
我的数据库中的序列字段不是主键。这是为什么它不起作用?主键的select语句可以正常工作:
String query = "Select * from Student where id=?";
Cursor c = rawQuery(query, String[]{String.valueOf(id)});
答案 0 :(得分:1)
好吧所以我明白了。希望这对某人有帮助。我用
包装我的数据库事务db.beginTransactionNonExclusive();
//Database operations
db.endTransaction();
我正在阅读beginTransactionNonExclusive()的文档,所有所做的更改都将在事务结束时回滚,除非您调用
db.setTransactionSuccessful()
之前打电话
db.endTransaction();
感谢大家的帮助。
答案 1 :(得分:0)
尝试以这种方式使用
db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy)
Cursor c = db.query("Student",null,"serial"+"=?",new String[]{serial.trim()},null, null, null);
如果需要,请像表名一样进行必要的更改。
答案 2 :(得分:0)
看起来像TEXT中的串行列。
使用like子句代替=
例如
db.query("Student",null,"serial like '%?%' ",new String[]{serial.trim()},null, null, null);
如果完全匹配则不需要%
db.query("Student",null,"serial like '?' ",new String[]{serial.trim()},null, null, null);