123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- // This is a test program for sqlite3.
- // We take it from rcore-os/arceos, thanks to @rcore-os community.
- #include <sqlite3.h>
- #include <stddef.h>
- #include <stdio.h>
- #include <string.h>
- int callback(void *NotUsed, int argc, char **argv, char **azColName)
- {
- NotUsed = NULL;
- for (int i = 0; i < argc; ++i) {
- printf("%s = %s\n", azColName[i], (argv[i] ? argv[i] : "NULL"));
- }
- printf("\n");
- return 0;
- }
- void exec(sqlite3 *db, char *sql)
- {
- printf("sqlite exec:\n %s\n", sql);
- char *errmsg = NULL;
- int rc = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
- if (rc != SQLITE_OK) {
- printf("sqlite exec error: %s\n", errmsg);
- }
- }
- void query(sqlite3 *db, char *sql)
- {
- printf("sqlite query:\n %s\n", sql);
- char *errmsg = NULL;
- int rc = sqlite3_exec(db, sql, callback, NULL, &errmsg);
- if (rc != SQLITE_OK) {
- printf("%s\n", errmsg);
- }
- }
- void query_test(sqlite3 *db, const char *args)
- {
- puts("======== init user table ========");
- exec(db, "create table user("
- "id INTEGER PRIMARY KEY AUTOINCREMENT,"
- "username TEXT,"
- "password TEXT"
- ")");
- puts("======== insert user 1, 2, 3 into user table ========");
- char cmd[256] = {0};
- sprintf(cmd,
- "insert into user (username, password) VALUES ('%s_1', 'password1'), ('%s_2', "
- "'password2'), ('%s_3', 'password3')",
- args, args, args);
- exec(db, cmd);
- puts("======== select all ========");
- query(db, "select * from user");
- puts("======== select id = 2 ========");
- query(db, "select * from user where id = 2");
- }
- void memory()
- {
- sqlite3 *db;
- printf("sqlite open memory\n");
- int ret = sqlite3_open(":memory:", &db);
- printf("sqlite open memory status %d \n", ret);
- query_test(db, "memory");
- }
- void file()
- {
- sqlite3 *db;
- int ret = sqlite3_open("file.sqlite", &db);
- printf("sqlite open /file.sqlite status %d \n", ret);
- if (ret != 0) {
- printf("sqlite open error");
- return;
- }
- query_test(db, "file");
- sqlite3_close(db);
- }
- int main()
- {
- printf("sqlite version: %s\n", sqlite3_libversion());
- memory();
- file();
- return 0;
- }
|