Hi,

I have downloaded the sqlite from the link http://www.sqlite.org/download.html 
version sqlite-3.6.23.so.gz<http://www.sqlite.org/sqlite-3.6.23.so.gz> (220.62 
KiB). I am using fedora -9-i386. Have mounted a
Shared drive on my pc to the fedora image.I copied the extracted sqlite db and 
saved it on the fedora usr/lib directory from where the code loads the db.

This is the piece of code that I am using to do the operations on sqlite db.

#include <iostream>
#include "sqlite3.h"
#include <dlfcn.h>

using namespace std;

typedef void* HINSTANCE;

typedef int (*FnPtr_sqlite3_open)(const char *filename, sqlite3 **ppDb );
typedef int (*FnPtr_sqlite3_extended_result_codes) (sqlite3*, int onoff);
typedef int (*FnPtr_sqlite3_prepare_v2)(sqlite3 *db, const char *zSql, int 
nByte, sqlite3_stmt **ppStmt, const char **pzTail );
typedef int (*FnPtr_sqlite3_step)(sqlite3_stmt*);
typedef int (*FnPtr_sqlite3_finalize)(sqlite3_stmt *pStmt);

class TDBClass
{
public:
        HINSTANCE LoadLibrary();
        void LoadFunctions();
        void VerifyLoadedFunction(void* aFnPtr);
public:
        FnPtr_sqlite3_open      sqlite3_open;
        FnPtr_sqlite3_extended_result_codes     sqlite3_extended_result_codes;
        FnPtr_sqlite3_prepare_v2                sqlite3_prepare_v2;
        FnPtr_sqlite3_step                      sqlite3_step;
        FnPtr_sqlite3_finalize          sqlite3_finalize;

        HINSTANCE sqLiteHndl;
};


HINSTANCE TDBClass::LoadLibrary()
        {
        sqLiteHndl = dlopen("/usr/lib/sqlite-3.6.23.so", RTLD_LAZY|RTLD_GLOBAL);
        return sqLiteHndl;
        }

void* GetProcAddress(HINSTANCE aHandle, const char* aSymbol)
        {
        return dlsym(aHandle, aSymbol);
        }

void TDBClass::LoadFunctions()
        {
        sqlite3_open = 
(FnPtr_sqlite3_open)GetProcAddress(sqLiteHndl,"sqlite3_open");
        if(sqlite3_open== NULL)
                {
                return;
                }
        sqlite3_prepare_v2      = (FnPtr_sqlite3_prepare_v2) 
GetProcAddress(sqLiteHndl,"sqlite3_prepare_v2");
        sqlite3_step            = (FnPtr_sqlite3_step) 
GetProcAddress(sqLiteHndl,"sqlite3_step");
        sqlite3_extended_result_codes = (FnPtr_sqlite3_extended_result_codes) 
GetProcAddress(sqLiteHndl, "sqlite3_extended_result_codes" );
        }



int main()
        {
        cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!

        sqlite3* sqlhandle;
        TDBClass tdbhandle;
        HINSTANCE sqlitehandle = tdbhandle.LoadLibrary();
        tdbhandle.LoadFunctions();
        int err = 
tdbhandle.sqlite3_open("/root/Sudha/epoc32/winscw/c/tswi/tscrtool/scr.db",&sqlhandle);
        err = tdbhandle.sqlite3_extended_result_codes(sqlhandle, 0);
        sqlite3_stmt* stmtHandle = NULL;
        const char* stmtTail = NULL;

        const char* statement = "CREATE TABLE SoftwareTypeNames(NameId INTEGER 
PRIMARY KEY NOT NULL,SoftwareTypeId INTEGER NOT NULL,Locale INTEGER DEFAULT 
0,Name TEXT NOT NULL);";
        std::string stmt(statement);
        tdbhandle.sqlite3_prepare_v2(sqlhandle, stmt.c_str(), stmt.size(), 
&stmtHandle, &stmtTail);
        int err1 = tdbhandle.sqlite3_step(stmtHandle);

        return 0;
        }


This step int err1 = tdbhandle.sqlite3_step(stmtHandle);
 in the code returns 5 (sqlite_busy) every time I run the program.
(I don't have any multi threads in my program which can lock the db. )

Any help on this is appreciated.


Regards
sudha

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to