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 に答える