Your examples suggest that actually sqlite3-bind_text "is not accepting std::string", not sqlite3_prepare_v2. But how exactly it "doesn't accept"? You pass SQLITE_STATIC as 5th parameter there; are you sure you don't destroy or change your strings before statement is executed?
Pavel On Tue, Mar 1, 2011 at 10:43 AM, <pcun...@fsmail.net> wrote: > Maybe I am to sleepy, but sqlite3_prepare_v2 is not accepting a std::string > as a parameter in the following example: > > > // Setup table structure > > SQLiteCommand("CREATE TABLE IF NOT EXISTS USR_EVENTS(AID INTEGER PRIMARY KEY > AUTOINCREMENT,USER_ID BIGINT,GROUP_ID BIGINT,SIS_EVENTS_PTR BIGINT"); > SQLiteCommand("CREATE INDEX index_name3 ON USR_EVENTS (USER_ID)"); > SQLiteCommand("CREATE INDEX index_name4 ON USR_EVENTS (GROUP_ID)"); > SQLiteCommand("CREATE INDEX index_name5 ON USR_EVENTS (SIS_EVENTS_PTR)"); > SQLiteCommand("INSERT INTO USR_EVENTS (USER_ID, GROUP_ID, SIS_EVENTS_PTR) > VALUES ('0', '3', '1')"); > > > // This query works > sCMD = "select AID, SIS_EVENTS_PTR from USR_EVENTS where (AID > '0') and > (USER_ID = '2' or GROUP_ID = '1' or GROUP_ID = '3')"; > > // This query works > sCMD = "select AID, SIS_EVENTS_PTR from USR_EVENTS where (AID > :1) and > (USER_ID = :2 or GROUP_ID = :3 or GROUP_ID = :4)"; > sqlite3_prepare_v2(ppDb, sCMD.c_str(), -1, &sql_statement_local, NULL); > sqlite3_bind_text(sql_statement_local, 1, "0", 1,SQLITE_STATIC); > sqlite3_bind_text(sql_statement_local, 2, "2", 1,SQLITE_STATIC); > sqlite3_bind_text(sql_statement_local, 3, "1", 1,SQLITE_STATIC); > sqlite3_bind_text(sql_statement_local, 4, "3", 1,SQLITE_STATIC); > > // PROBLEM !!! This does not work??? why??? > std::string sAID = "0"; > std::string USER_ID = "2"; > std::string GROUP_IDa = "1"; > std::string GROUP_IDb = "3"; > sCMD = "select AID, SIS_EVENTS_PTR from USR_EVENTS where (AID > :1) and > (USER_ID = :2 or GROUP_ID = :3 or GROUP_ID = :4)"; > sqlite3_prepare_v2(ppDb, sCMD.c_str(), -1, &sql_statement_local, NULL); > sqlite3_bind_text(sql_statement_local, 1, sAID.c_str(), 1,SQLITE_STATIC); > sqlite3_bind_text(sql_statement_local, 2, USER_ID.c_str(), 1,SQLITE_STATIC); > sqlite3_bind_text(sql_statement_local, 3, GROUP_IDa.c_str(), 1,SQLITE_STATIC); > sqlite3_bind_text(sql_statement_local, 4, GROUP_IDb.c_str(), 1,SQLITE_STATIC); > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users