Aqlier/ 10月 10, 2022/ tech

Xcode 開発で、 sqlite(DB)を使用することがあります。
抽出時(select命令)、検索条件を検索の都度変更したいときがあります。
select命令で、可変変数を使用する際の方法をまとめました。


以下のコードは、Xcode (Objective-c)です。他の言語も同様の考え方で対応できます。
簡単なサンプルです。
条件によって、時刻を可変変数にセットしてその時刻で検索する方法です。

sqliteのselect文で、可変変数の前後には半角空白が必要です。

 


    sqlite3 *database;
    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {

   途中の処理は、割愛します。

         NSString *Wtime;

        //条件により時刻を判定 検索で使用する時刻をセット

        if (xxxxxxxxxx > …     ){
              Wtime = "1234";//12時34分
        }else{
              Wtime = "1456";//14時56分
        }

        NSString *sql_a = @"select ikisaki,time from bustable where time >= ";
        NSString *sql_b = @" order by time";

        NSString *str10 = [sql_a stringByAppendingString:Wtime];
        NSString *str11 = [str10 stringByAppendingString:sql_b];

        const char *sql = [str11 UTF8String];
        
        sqlite3_stmt *selectStatement;
        if(sqlite3_prepare_v2(database, sql, -1, &selectStatement, NULL) == SQLITE_OK) {


     途中の処理は、割愛します。

        }
        sqlite3_close(database);