1

我有以下代码。当我打开我的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是索引)。

使用调试器,我可以确认两个查询都已执行并且我没有收到任何异常或错误。

任何的想法?我花了几个小时在这上面,但我想不通。我想这是我错过的非常微不足道的事情。

4

4 回答 4

10
public void execSQL (String sql) 

执行不是 SELECT 的单个 SQL 语句或任何其他返回数据的 SQL 语句。

你必须execSQL()使用

  • 插入
  • 更新
  • 删除

使用rawQuery() 它返回Cursor查询SELECT

于 2012-10-03T08:16:46.763 回答
9

虽然我在文档中找不到这个,但我理解的是 rawQuery 是用于 SELECT 查询的。它只是“查询”方法所做的“原始”接口。

于 2012-10-03T08:01:13.447 回答
3

你必须把:

Cursor c = database.rawQuery(sql, null);
c.moveToFirst();
c.close();
于 2014-08-04T19:52:59.767 回答
-1

试试这个

database.rawQuery("INSERT INTO Users(Id, Name, Surname, LastLogin) VALUES(1234, 'john', 'foo', null)", null);

让我知道它是否有效?

于 2012-10-03T08:01:01.743 回答