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 }