我有以下代码。当我打开SQLite
数据库时,我可以看到Id = 1235
患者已创建,但Id = 1234
没有:
String sql;
sql = "INSERT INTO Users(Id, Name, Surname, LastLogin)VALUES(1234, 'john', 'foo', null)";
database.rawQuery(sql, null);
sql = "INSERT INTO Users(Id, Name, Surname, LastLogin)VALUES(1235, 'john', 'foo', null);";
database.execSQL(sql);
rawQuery()
州的文档:
SQL查询。 SQL字符串必须不 ; 已终止
在我的第一个查询中确实如此。 (另一个区别是Id
。我更改了它以便两个插入都可以工作,Id
是索引)。
使用调试器我可以确认两个查询都已执行,并且我没有得到任何异常或错误。
有什么想法吗?我花了好几个小时,但我无法理解。我想这是我失踪的一件非常微不足道的事。
答案 0 :(得分:10)
public void execSQL (String sql)
执行一个非SELECT或任何其他SQL的SQL语句 返回数据的语句。
您必须使用execSQL()
使用rawQuery()
为Cursor
次查询返回SELECT
。
答案 1 :(得分:9)
虽然我在文档中找不到这个,但我理解的是rawQuery是用于SELECT查询的。它只是“查询”方法的“原始”接口。
答案 2 :(得分:3)
你必须把:
Cursor c = database.rawQuery(sql, null);
c.moveToFirst();
c.close();
答案 3 :(得分:-1)
试试这个
database.rawQuery("INSERT INTO Users(Id, Name, Surname, LastLogin) VALUES(1234, 'john', 'foo', null)", null);
让我知道它是否有效?