Skip to main content

SQLite使用説明(VC++言語)(2)

3.SQL操作

3.1. INSERT操作

以下の手順で操作を行います。

  1. SQL文をコンパイルする(sqlite3_prepare)
  2. 値を設定する(sqlite3_bind)
  3. SQLを実行する(sqlite3_step)
  4. SQL文を破棄する(sqlite3_finalize)

イメージは:

sqlite3_prepare_repeat_using

UPDATE、DELETE、SELECTも同じ手順です。

まずデータベースオブジェクトを作成します。

sqlite3* db;
int rs = sqlite3_open( "test.db", &db );

そしてSQLをコンパイルしてコンパイラステートメントを作成します。

sqlite3_stmt* stmt;
rc = sqlite3_prepare( db, "INSERT INTO Names ( Name ) VALUES ( ? )", -1, &stmt, NULL );

データを挿入するため「?」を値の代わりに記入します。SQLが正しくコンパイルされた場合SQLITE_OKの戻り値コードが返されます。それ以外の場合エラーコードが返されます。

sqlite3_bind_text16を使用して、パラメータを渡します。

sqlite3_bind_text16( stmt, 1, "Tom", -1, SQLITE_STATIC );

1はパラメータの順番です。複数のパラメータがある場合は、1からの連番でsqlite3_bindを使用して設定します。(詳しくはこちら)

sqlite3_stepを使用してSQLを実行する。

rc = sqlite3_step( stmt );

データが正しく保存された場合はSQLITE_DONEの戻りコードが返されます。それ以外の場合エラーコードが返されます。(エラーコード詳細はこちら)

sqlite3_finalizeを使用してコンパイルステートメントを破棄します。

sqlite3_finalize( stmt );

sqlite3_closeを使用してデータベースをクローズします。

sqlite3_close( db );

以上でデータの挿入操作は完了します。

複数のデータを挿入する時、使用するSQL文が同じ場合は、 5.2の挿入高速化&効率化をご覧ください。

3.2. UPDATE操作

3.1.で挿入されたTomという名前をJohnに更新します。

sqlite3* db;
sqlite3_open( "test.db", &db );       /* DBを開く */

/* SQLをコンパイル */  
sqlite3_stmt* stmt;
rc = sqlite3_prepare( db, "UPDATE Names SET name = ? WHERE name = ?", -1, &stmt );

/* パラメータ1をJohnに設定する */ 
sqlite3_bind_text16( stmt, 1, L"John", -1, SQLITE_STATIC );
/* パラメータ2をTomに設定する */
sqlite3_bind_text16( stmt, 2, L"Tom", -1, SQLITE_STATIC ); 

rc = sqlite3_step( stmt );       /* コンパイルされたSQLを実行する */ 

sqlite3_finalize( stmt );        /* コンパイルステートメントを破棄する */
sqlite3_close( db );             /* データベースをクローズする */

3.3. DELETE操作

3.2.で更新したJohnという名前を削除します。

sqlite3* db;
sqlite3_open( "test.db", &db ); /* DBを開く */ 

sqlite3_stmt* stmt;
rc = sqlite3_prepare( db, "DELETE FROM Names where name = ?", -1, &stmt ); /* SQLをコンパイル */ 

/* パラメータ1をJohnに設定する */
sqlite3_bind_text16( stmt, 1, "John", -1, SQLITE_STATIC );    
/* コンパイルされたSQLを実行する */ 
rc = sqlite3_step( stmt );                                   

sqlite3_finalize( stmt );         /* コンパイルステートメントを破棄する */ 
sqlite3_close( db );              /* データベースをクローズする */

3.4. SELECT操作

sqlite3* db;
sqlite3_open( "test.db", &db ); /* DBを開く */ 

/* SQLをコンパイル */
sqlite3_stmt* stmt;
int rc = sqlite3_prepare( db, "SELECT name FROM Names", -1, &stmt );

SQLを実行します。

while( ( rc = sqlite3_step( stmt ) ) == SQLITE_ROW )
{
   /*sqlite3_columnを使用して番号で指定したカラムの値を取得する*/
   TCHAR* szName = (TCHAR*)sqlite3_column_text16( stmt, 0 );
   m_wndNameList.AddString( szName );     /* 取得した名前をリストに追加する */ 
}

sqlite3_finalize( stmt );     /* コンパイルステートメントを破棄する */ 
sqlite3_close( db );          /* データベースをクローズする */

[前のページへ]        [次のページへ]

Jingwood

北海道の田舎で暮らしているプログラマーです。最近山登りにハマりました。

2 thoughts to “SQLite使用説明(VC++言語)(2)”

Leave a Reply

Your email address will not be published. Required fields are marked *