c++ : Create database using SQLite for Insert & update

前端 未结 3 1028
自闭症患者
自闭症患者 2020-12-30 07:50

I am trying to create a database in c++ using sqlite3 lib.. I am getting error sqlite3_prepare_v2\'
was not declared in this scope
as shown in logcat.<

相关标签:
3条回答
  • 2020-12-30 07:54
     #include <sqlite3.h>
    

    should contain sqlite3_prepare_v2 and struct sqlite3. Make sure you're including the right sqlite3.h file.

    Also in sqlite3_prepare_v2 the 3rd arg can be (and should be in your case) -1 so the sql is read to the first null terminator.

    Working bare-metal sample using sqlite 3.7.11:

    #include <sqlite3.h>
    int test()
    {
        sqlite3* pDb = NULL;
        sqlite3_stmt* query = NULL;
        int ret = 0;
        do // avoid nested if's
        {
            // initialize engine
            if (SQLITE_OK != (ret = sqlite3_initialize()))
            {
                printf("Failed to initialize library: %d\n", ret);
                break;
            }
            // open connection to a DB
            if (SQLITE_OK != (ret = sqlite3_open_v2("test.db", &pDb, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL)))
            {
                printf("Failed to open conn: %d\n", ret);
                break;
            }
            // prepare the statement
            if (SQLITE_OK != (ret = sqlite3_prepare_v2(pDb, "SELECT 2012", -1, &query, NULL)))
            {
                printf("Failed to prepare insert: %d, %s\n", ret, sqlite3_errmsg(pDb));
                break;
            }
            // step to 1st row of data
            if (SQLITE_ROW != (ret = sqlite3_step(query))) // see documentation, this can return more values as success
            {
                printf("Failed to step: %d, %s\n", ret, sqlite3_errmsg(pDb));
                break;
            }
            // ... and print the value of column 0 (expect 2012 here)
            printf("Value from sqlite: %s", sqlite3_column_text(query, 0));     
    
        } while (false);
        // cleanup
        if (NULL != query) sqlite3_finalize(query);
        if (NULL != pDb) sqlite3_close(pDb);
        sqlite3_shutdown();
        return ret;
    }
    

    Hope this helps

    0 讨论(0)
  • 2020-12-30 08:06

    Guys , creating database using sqlite3 in c/c++, here I'm using follwing steps...

    1) Firstly you include MinGw file .
    2) Add header file sqlite3.h, sqlite3.c in your src folder.
    3) Add libr folder , in libr here include these file
    
        mysqlite.h, shell.c, sqlite3.c, sqlite3.h, sqlite3ext.h
    

    After then start your coding...

         #include <iostream>
     using namespace std;
     #include "sqlite3.h"
    
     int main (int argc, const char * argv[]) {
    
        sqlite3 *db;
        sqlite3_open("test1.db", & db);
    
      string createQuery = "CREATE TABLE IF NOT EXISTS items (userid INTEGER PRIMARY KEY, ipaddr
          TEXT,username TEXT,useradd TEXT,userphone INTEGER,age INTEGER, "
                                                        "time TEXT NOT NULL DEFAULT 
                                                                                 (NOW()));";
        sqlite3_stmt *createStmt;
        cout << "Creating Table Statement" << endl;
        sqlite3_prepare(db, createQuery.c_str(), createQuery.size(), &createStmt, NULL);
        cout << "Stepping Table Statement" << endl;
        if (sqlite3_step(createStmt) != SQLITE_DONE) cout << "Didn't Create Table!" << endl;
    
        string insertQuery = "INSERT INTO items (time, ipaddr,username,useradd,userphone,age) 
            VALUES ('7:30', '192.187.27.55','vivekanand','kolkatta','04456823948',74);"; // WORKS!
        sqlite3_stmt *insertStmt;
        cout << "Creating Insert Statement" << endl;
        sqlite3_prepare(db, insertQuery.c_str(), insertQuery.size(), &insertStmt, NULL);
        cout << "Stepping Insert Statement" << endl;
        if (sqlite3_step(insertStmt) != SQLITE_DONE) cout << "Didn't Insert Item!" << endl;  
    
    
    
             return 0;
         }
    
    0 讨论(0)
  • 2020-12-30 08:12

    go through this link. I am not sure. It might help you out.

    I think their is no sqlite3_prepare_v2 in sqlite3.h lib, so try this.. sqlite3_prepare_v2 can be replaced by sqlite3_prepare, but more care is needed, because it changes the semantics of subsequent calls slightly.

    0 讨论(0)
提交回复
热议问题