C言語でのSQLite3データベース操作実例

SQLite3データベースの基本操作

SQLiteは軽量でサーバレスなデータベースエンジンであり、C言語プログラムに組み込むことが可能です。

主要なSQLコマンド例

// テーブル作成
"CREATE TABLE PRODUCTS "
"(PRODUCT_ID INTEGER PRIMARY KEY AUTOINCREMENT,"
" PRODUCT_NAME TEXT NOT NULL, "
" STOCK_QTY INTEGER NOT NULL, "
" UNIT_PRICE REAL)"

// テーブル削除
"DROP TABLE IF EXISTS PRODUCTS"

// データ挿入
"INSERT INTO PRODUCTS (PRODUCT_NAME, STOCK_QTY, UNIT_PRICE) "
"VALUES ('apple', 50, 1.8)"

// データ検索
"SELECT PRODUCT_ID, PRODUCT_NAME, STOCK_QTY FROM PRODUCTS"

// データ更新
"UPDATE PRODUCTS SET PRODUCT_NAME='golden_apple' WHERE PRODUCT_NAME='apple'"

C言語実装サンプル

#include <stdio.h>
#include <sqlite3.h>

// クエリ結果処理用コールバック関数
static int result_handler(void *context, int col_count, char **row_values, char **col_names) {
    for(int i = 0; i < col_count; i++) {
        printf("%s: %s\n", col_names[i], row_values[i] ? row_values[i] : "NULL");
    }
    printf("---\n");
    return 0;
}

int main() {
    sqlite3 *db_conn;
    int status;
    char *error_msg = NULL;
    
    // データベース接続
    status = sqlite3_open("inventory.db", &db_conn);
    
    if(status != SQLITE_OK) {
        printf("データベース接続エラー: %s\n", sqlite3_errmsg(db_conn));
        sqlite3_close(db_conn);
        return 1;
    }
    
    // テーブル作成SQL実行
    const char *create_sql = "CREATE TABLE IF NOT EXISTS PRODUCTS "
                            "(PRODUCT_ID INTEGER PRIMARY KEY AUTOINCREMENT,"
                            " PRODUCT_NAME TEXT NOT NULL, "
                            " STOCK_QTY INTEGER NOT NULL, "
                            " UNIT_PRICE REAL)";
    
    status = sqlite3_exec(db_conn, create_sql, NULL, NULL, &error_msg);
    
    if(status != SQLITE_OK) {
        printf("SQLエラー: %s\n", error_msg);
        sqlite3_free(error_msg);
    }
    
    // データ挿入
    const char *insert_sql = "INSERT INTO PRODUCTS (PRODUCT_NAME, STOCK_QTY, UNIT_PRICE) "
                            "VALUES ('orange', 75, 1.2), "
                            "('grape', 40, 2.8), "
                            "('melon', 15, 5.5)";
    
    status = sqlite3_exec(db_conn, insert_sql, NULL, NULL, &error_msg);
    
    // データ検索
    const char *select_sql = "SELECT * FROM PRODUCTS WHERE UNIT_PRICE > 2.0";
    status = sqlite3_exec(db_conn, select_sql, result_handler, NULL, &error_msg);
    
    // データベース切断
    sqlite3_close(db_conn);
    return 0;
}

コンパイル時にはSQLite3ライブラリをリンクする必要があります:

gcc db_example.c -lsqlite3 -o db_program

タグ: sqlite3 C言語 データベース 組み込みdb

6月19日 20:51 投稿