Try using SQLITE_TRANSIENT instead of STATIC.


Michael D. Black
Senior Scientist
NG Information Systems
Advanced Analytics Directorate



________________________________________
From: sqlite-users-boun...@sqlite.org [sqlite-users-boun...@sqlite.org] on 
behalf of pcun...@fsmail.net [pcun...@fsmail.net]
Sent: Tuesday, March 01, 2011 9:43 AM
To: sqlite-users@sqlite.org
Subject: EXT :[sqlite] sqlite3_prepare_v2 and std::string using SQLite 3.7.5 - 
BUG or me?

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

Reply via email to