Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // cc -o shared shared.c -lsqlite3 && ./shared
- #include <stdio.h>
- #include <sqlite3.h>
- #if 0
- #define path ":memory:"
- #elif 0
- #define path "file:memdb?cache=shared"
- #elif 1
- #define path "file:memdb?mode=memory&cache=shared"
- #endif
- int main(int argc, char** argv) {
- sqlite3* db = NULL;
- int rc = sqlite3_open_v2(path, &db,
- SQLITE_OPEN_URI|SQLITE_OPEN_SHAREDCACHE|
- SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, NULL);
- if (rc != SQLITE_OK) {
- fprintf(stderr, "sqlite3_open_v2() -> %d\n", rc);
- return 1;
- }
- char* errmsg = NULL;
- #if 0
- rc = sqlite3_exec(db, "CREATE TABLE t (c TEXT)", NULL, NULL, &errmsg);
- #else
- rc = sqlite3_exec(db, "CREATE VIRTUAL TABLE t USING fts3(c TEXT)", NULL, NULL, &errmsg);
- #endif
- if (rc != SQLITE_OK) {
- fprintf(stderr, "CREATE -> %d:%s\n", rc, errmsg);
- return 1;
- }
- rc = sqlite3_exec(db, "INSERT INTO t VALUES ('hello')", NULL, NULL, &errmsg);
- if (rc != SQLITE_OK) {
- fprintf(stderr, "INSERT -> %d:%s\n", rc, errmsg);
- return 1;
- }
- sqlite3* odb = NULL;
- rc = sqlite3_open_v2(path, &odb,
- SQLITE_OPEN_URI|SQLITE_OPEN_SHAREDCACHE|
- SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, NULL);
- if (rc != SQLITE_OK) {
- fprintf(stderr, "other sqlite3_open_v2() -> %d\n", rc);
- return 1;
- }
- sqlite3_stmt* s = NULL;
- rc = sqlite3_prepare(odb, "SELECT c FROM t", -1, &s, NULL);
- if (rc != SQLITE_OK) {
- fprintf(stderr, "prepare -> %d\n", rc);
- return 1;
- }
- rc = sqlite3_step(s);
- if (rc != SQLITE_ROW) {
- fprintf(stderr, "first step -> %d\n", rc);
- return 1;
- }
- const unsigned char* t = sqlite3_column_text(s, 0);
- fprintf(stderr, "Got %s\n", t);
- rc = sqlite3_step(s);
- if (rc != SQLITE_DONE) {
- fprintf(stderr, "last step -> %d\n", rc);
- return 1;
- }
- fprintf(stderr, "Success\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment