SQLite:rawQuery()不起作用,但execSQL()工作

时间:2012-10-03 07:52:59

标签: android sqlite

我有以下代码。当我打开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 个答案:

答案 0 :(得分:10)

public void execSQL (String sql) 
  

执行一个非SELECT或任何其他SQL的SQL语句   返回数据的语句。

您必须使用execSQL()

  • INSERT
  • 更新
  • DELETE

使用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);

让我知道它是否有效?