2012-11-02 7 views
7

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

たとえば、著者は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); 

Selectステートメント:

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

それはExecSqlの()メソッドを使用して文の最後にセミコロンを必要とする場合ですが、文は使用してCREATE TABLE文を

rawQuery()メソッドはありませんか?

答えて

12

SQLite文は、セミコロン(;)で終了します。指定されていれば、それはコマンドの終わりであり、さらに多くのコマンドがそのセミコロンに続くことを意味します。セミコロンを指定しないと、文字列全体がコマンドになります。

この場合、CREATEステートメントのセミコロンは無視されます。

+1

Gotcha。ですから、私が1つのコマンドを送信している限り、セミコロンは完全にオプションですか? –

+0

@DanielS Correct。 – Eric

+0

これはそれだと思います。コマンドラインからSQLを使用する場合は、セミコロンを入力する必要があります。多くのSQL APIは、セミコロンがなければ最後にセミコロンをポップするようです。 –

2

私は二度とセミコロンを使用したことはありません。

+1

1回のクエリにつき1つのクエリしか渡さないためです。 – ST3

関連する問題