简体   繁体   中英

SQLite3: the database was created empty?

I'm trying to create a database with a table using sqlite3 on my C program, however the database is always created as empty, though it was created non-empty using the sqlite shell, here is my code below:

int main(void)
{
    printf("hello\n");
    sqlite3 *sqdb;
    sqlite3_initialize();
    const char* db = "test";
    sqlite3_open(db, &sqdb);
    const char* stmt = "CREATE TABLE IF NOT EXISTS testtable(creationdate DATE, data VARCHAR);";
    sqlite3_stmt *ppstmt;
    if (sqlite3_prepare_v2(sqdb, stmt, -1, &ppstmt, 0)!=SQLITE_OK)printf("error!\n");
    sqlite3_finalize(ppstmt);
    getch();
    return 0;
}

please help me to solve the problem.

sqlite3_prepare_v2() alone just compiles the SQL but does not run it. Call sqlite3_step() on the compiled statement to run it, or use sqlite3_exec() that combines prepare+step+finalize into one function call.

Try this:

   int main(void)
{
    printf("hello\n");
    sqlite3 *sqdb;
    int ret;
    sqlite3_initialize();
    const char* db = "test.sqlite3";
    sqlite3_open(db, &sqdb);
    const char* stmt = "CREATE TABLE IF NOT EXISTS testtable(creationdate DATE, data VARCHAR);";
    sqlite3_stmt *ppstmt=NULL;

    ret=sqlite3_exec(sqdb,stmt,0,0,0);
    if(ret!=SQLITE_OK)printf("error!\n");
    else printf("Table added\n");
    sqlite3_finalize(ppstmt);
    sqlite3_close(sqdb);
    return 0;
}

Please do remember to close the DB after operation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM