13

rawQuery()Android で SQLite のまたはメソッドを使用している場合execSQL()、いつステートメントを終了するためにセミコロンを使用する必要がありますか?

たとえば、このチュートリアルでは、作成者は create table ステートメント (execSQL 経由) でセミコロンを使用しますが、select ステートメント (rawQuery 経由) では使用しません。例えば:

テーブル ステートメントの作成:

private static final String DATABASE_CREATE = "create table "
      + TABLE_COMMENTS + "(" + COLUMN_ID
      + " integer primary key autoincrement, " + COLUMN_COMMENT
      + " text not null);";
database.execSQL(DATABASE_CREATE);

ステートメントを選択:

Cursor cursor = getReadableDatabase().
  rawQuery("select * from todo where _id = ?", new String[] { id });

メソッドを使用するステートメントexecSQL()には最後にセミコロンが必要ですが、メソッドを使用するステートメントはそうでrawQuery()はありませんか?

4

2 に答える 2

17

SQLite ステートメントはセミコロン ( ;) で終了します。1 つが指定されている場合は、それがコマンドの終わりであり、そのセミコロンの後にさらにコマンドを続けることができることを意味します。セミコロンが指定されていない場合、文字列全体がコマンドと見なされます。

この場合、CREATEステートメント内のセミコロンは、その後に何もないため、重要ではありません。

于 2012-11-02T20:30:51.290 に答える
3

両方でセミコロンを使用したことはありませんが、機能します

于 2012-11-02T20:31:37.337 に答える