/ src / examples / sqlite-test / main.cpp
main.cpp
 1  // SQLite3 test - show nix dep resolution works for database libs too
 2  
 3  #include <sqlite3.h>
 4  #include <stdio.h>
 5  
 6  int main(void) {
 7    printf("=== SQLite3 test ===\n\n");
 8    printf("SQLite version: %s\n", sqlite3_libversion());
 9    printf("SQLite source ID: %s\n", sqlite3_sourceid());
10  
11    // Create in-memory database
12    sqlite3 *db;
13    int rc = sqlite3_open(":memory:", &db);
14    if (rc != SQLITE_OK) {
15      fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
16      return 1;
17    }
18    printf("\nOpened in-memory database OK\n");
19  
20    // Create a table
21    const char *sql = "CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT);";
22    char *err_msg = 0;
23    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
24    if (rc != SQLITE_OK) {
25      fprintf(stderr, "SQL error: %s\n", err_msg);
26      sqlite3_free(err_msg);
27      sqlite3_close(db);
28      return 1;
29    }
30    printf("Created table OK\n");
31  
32    // Insert some data
33    sql = "INSERT INTO test (name) VALUES ('alice'), ('bob'), ('charlie');";
34    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
35    if (rc != SQLITE_OK) {
36      fprintf(stderr, "SQL error: %s\n", err_msg);
37      sqlite3_free(err_msg);
38      sqlite3_close(db);
39      return 1;
40    }
41    printf("Inserted 3 rows OK\n");
42  
43    // Query
44    sqlite3_stmt *stmt;
45    sql = "SELECT id, name FROM test;";
46    rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);
47    if (rc != SQLITE_OK) {
48      fprintf(stderr, "Failed to prepare statement: %s\n", sqlite3_errmsg(db));
49      sqlite3_close(db);
50      return 1;
51    }
52  
53    printf("\nQuery results:\n");
54    while ((rc = sqlite3_step(stmt)) == SQLITE_ROW) {
55      int id = sqlite3_column_int(stmt, 0);
56      const unsigned char *name = sqlite3_column_text(stmt, 1);
57      printf("  id=%d, name=%s\n", id, name);
58    }
59  
60    sqlite3_finalize(stmt);
61    sqlite3_close(db);
62  
63    printf("\n=== SQLite3 working ===\n");
64    return 0;
65  }