Hi,

I am a embedded engineer and new to sqlite,we want to use sqlite for our
local storage instead of file i/o.

I have created a table with key and value records of char type,now if I try
store a value with string length more than 50 char I get segmentation
fault,please see the code below and let me know if I can improve it.

sqlite3 *mod_init() {

    /* Open database */
    //rc = sqlite3_open("test.db", &dbObj->db);
    lastError = sqlite3_open_v2("test.db", &db, SQLITE_OPEN_READWRITE |
SQLITE_OPEN_CREATE | SQLITE_OPEN_SHAREDCACHE|SQLITE_OPEN_NOMUTEX , NULL);
    if( lastError ) {
        fprintf(stderr, "Can't open database: %s\n",
sqlite3_errmsg(dbObj->db));
    free(query);
    return(0);
    } else {
        fprintf(stdout, "Opened database successfully\n");
    }
    memset(query,0,200);
    strcpy(query,"CREATE TABLE IF NOT EXISTS cosmos_db("  \
    "key   TEXT PRIMARY KEY       NOT NULL," \
    "value        VARCHAR(100));");

    /* Execute SQL statement */
    lastError = sqlite3_exec(db, query, 0, 0, &zErrMsg);


    if( lastError != SQLITE_OK ){
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    } else {
        fprintf(stdout, "Table created successfully\n");
    }
return db;
}



int mydef_set(cf_db_t *dbObj,char *key, char **value)
{
    char *zErrMsg = 0;
    int rc;
    sprintf(query,"INSERT OR REPLACE INTO cosmos_db (key,value) values
('%s', '%s');",key,*value);
    /* Execute SQL statement */
    lastError = sqlite3_exec(db, query, 0, 0, &zErrMsg);
    if( lastError != SQLITE_OK ) {
                  fprintf(stderr, "SQL error: %s\n", zErrMsg);
                  sqlite3_free(zErrMsg);
           } else {
                  fprintf(stdout, "Update done successfully\n");
           }
    return lastError;
}


int main()
{
    sqlite3 *db;
    db=mod_init();
        mydef_set(db,"sssi","Hitjkahzdsdhdjksdhjsdhsjfhjsdhfjhsjd bcn
bsdbgfhjsdgcsdfcbscbshdfgchdsfbbsdfcsfg");
}

Thanks,
Ratheendran
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to