You have a vast number of undeclared variables that are pointing into super-crash-land:
sqlite3 *mod_init() db is undeclared dbObj is undeclared lastError is undeclared query is undeclared zErrMsg is undeclared int mydef_set(cf_db_t *dbObj,char *key, char **value) type cf_db_t is undeclared query is undeclared db is undeclared lastError is undeclared char **value does not match passed type int main() in call to mydef_set parameter 1 (sqlite3*) does not match expected (cf_db_t*) parameter 2 (char*) does not match expected (char**) --- The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume. >-----Original Message----- >From: sqlite-users [mailto:sqlite-users- >boun...@mailinglists.sqlite.org] On Behalf Of Ratheendran R >Sent: Sunday, 21 October, 2018 10:55 >To: sqlite-users@mailinglists.sqlite.org >Subject: [sqlite] segmentation fault in sqlite api call > >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 _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users