NULL
以下の5番目のパラメータを入力する理由を教えてください。
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK)
前もって感謝します。
ステートメントが 1 つしかない限りsql
、5 番目のパラメーターを使用する必要はありません。sql
複数のステートメントがある場合、次のステートメントの先頭へのポインターを受け取ることができます。例えば:
const char* sql =
"DROP TABLE price_list;"
"CREATE TABLE price_list ( item TEXT, price INTEGER)";
while ( *sql ) {
sqlite3_stmt* statement;
sqlite3_prepare_v2(db, sql, -1, &statement, &sql);
sqlite_step(statement);
sqlite_finalize(statement);
}
SQL ステートメントのコンパイルされていない部分は気にしないためです。ドキュメントから:
pzTail が NULL でない場合、*pzTail は、zSql の最初の SQL ステートメントの末尾を過ぎた最初のバイトを指すように作成されます。これらのルーチンは zSql の最初のステートメントのみをコンパイルするため、*pzTail はコンパイルされていないものを指しているままになります。
多くのSQLステートメントを含む文字列がある場合、これがあると便利ですが、そうでない場合はただの粗雑です.