0.DB-SQLiteの添削


sqlite3 *db; 
sqlite3_stmt * stmt; 
const char *zTail;

Tableの作成
sqlite3_prepare(db, "create....", -1, &stmt, &zTail); 
sqlite3_step(); 
sqlite3_finalize(stmt);

データの挿入:バインド時のインデックスが0から始まることに注意してください.取引に参加したほうがいい
sqlite3_transaction trans(db); 
sqlite3_prepare(db, "INSERT INTO players (name,num) VALUES(?,?);", -1, &stmt, &zTail); 
sqlite3_bind_text(stmt, 1, str, -1, SQLITE_STATIC); 
sqlite3_bind_int(stmt, 2, n); 
sqlite3_step(stmt); 
sqlite3_reset(stmt); //              
sqlite3_bind_text(stmt,1,str2,-1,SQLITE_STATIC); 
sqlite3_bind_int(stmt,2,n2); 
sqltie3_step(stmt); 
sqlite3_finalize(stmt); 
trans.commit();

すべてのデータの問合せ:列の下付き文字は0から
sqlite3_prepare(db,"SELECT ID, name, num FROM players ORDER BY num;", -1,&stmt,&zTail); 
sqlite3_step(stmt); 
while( r == SQLITE_ROW ) { 
    int id = sqlite3_column_int( stmt, 0 ); 
    char* name = sqlite3_column_text( stmt,1 ); 
    number = sqlite3_column_int( stmt, 2 ); 
    sqlite3_step(stmt); 
} 
sqlite3_finalize(stmt);

説明
1.sqlite 3_を呼び出すprepare()SQL文をsqlite内部の構造体(sqlite 3_stmt)にコンパイルする.この構造体には、実行するSQL文の情報が含まれている.2.入力パラメータが必要な場合は、SQL文で'?'を使用します.プレースホルダとしてbind_を呼び出す入力パラメータsqlite 3_bind_XXX()関数は対応するパラメータをsqlite 3_に入力するreset()は、バインドされたパラメータ3を明確にする.sqlite 3_を呼び出すStep()このときSQL文は本当に実行されます.1行のデータしか返さないことに注意してください!!4.sqlite 3_を呼び出すfinalize()はstmtが使用するメモリを解放します.このメモリはsqlite 3_です.prepare()時に割り当てる.