Hello Lloyd, You need to escape the quotes. Remember in C and C++ " means the beginning or end of a literal string so, when you want to embed quotes in a string you have to escape them. Probaby \".
You'd be better off using the paramaterized version of the SQL std::string sql = "insert into call_data (direction, call_time, dest, trunk_no, file_name)values(?,?,?,?,?);"; Then bind the actual parameters after the fact. C Saturday, September 9, 2006, 7:02:43 PM, you wrote: LT> Jay, Thanks for your reply. LT> I gave it a try with and got a few errors. as follows LT> --------------------------------------------------------------- LT> logger.cpp:609: error: invalid operands of types `const char[80]' and LT> `char[4]' to binary `operator+' LT> logger.cpp:615: error: `t' was not declared in this scope LT> logger.cpp:615: warning: unused variable 't' LT> logger.cpp:634: error: jump to case label LT> logger.cpp:631: error: crosses initialization of `std::string test2' LT> logger.cpp:628: error: crosses initialization of `std::string test1' LT> logger.cpp:637: error: jump to case label LT> logger.cpp:631: error: crosses initialization of `std::string test2' LT> logger.cpp:628: error: crosses initialization of `std::string test1' LT> logger.cpp:638: error: jump to case label LT> logger.cpp:631: error: crosses initialization of `std::string test2' LT> logger.cpp:628: error: crosses initialization of `std::string test1' LT> logger.cpp:639: error: jump to case label LT> logger.cpp:631: error: crosses initialization of `std::string test2' LT> logger.cpp:628: error: crosses initialization of `std::string test1' LT> logger.cpp:641: error: `t' was not declared in this scope LT> logger.cpp:641: warning: unused variable 't' LT> logger.cpp:664: error: jump to case label LT> logger.cpp:621: error: crosses initialization of `bool Loop' LT> logger.cpp:634: warning: destructor needed for `test2' LT> logger.cpp:634: warning: where case label appears here LT> logger.cpp:634: warning: (enclose actions of previous case statements LT> requiring destructors in their own scope.) LT> logger.cpp:637: warning: destructor needed for `test2' LT> logger.cpp:637: warning: where case label appears here LT> logger.cpp:638: warning: destructor needed for `test2' LT> logger.cpp:638: warning: where case label appears here LT> logger.cpp:639: warning: destructor needed for `test2' LT> logger.cpp:639: warning: where case label appears here LT> make: *** [logger.o] Error 1 LT> ------------------------------------------------------ LT> line 609 = LT> sql = "insert into call_data (direction, call_time, dest, trunk_no, LT> file_name)values('"+details.inout+"','"+details.statime+"','"+details.cidn+"'"+details.channel+"','"+details.filename+"')"; LT> ----- Original Message ----- LT> From: "Jay Sprenkle" <[EMAIL PROTECTED]> LT> To: <sqlite-users@sqlite.org> LT> Sent: Saturday, September 09, 2006 11:16 PM LT> Subject: Re: [sqlite] A lillte help adding sqlite to a c program >> On 9/9/06, Lloyd Thomas <[EMAIL PROTECTED]> wrote: >>> I know nothing of C++ and therefore need a lilte help editing a C++ app >>> to >>> insert some records into a database. >> >> here's an example to read from a database. >> If you build the sql like you're doing and you use it on the web you >> leave yourself >> open to sql injection attacks. Using the bind() method eliminates that >> vulnerability. >> Something to consider. >> >> Jay >> >> >> Here's some example code: >> >> sqlite3* db; >> >> // connect to database >> if ( sqlite3_open( "test.db", &db ) ) >> throw "Can't open database"; >> >> char* sql; >> >> sql = "SELECT one.test1, two.test2" >> " FROM one" >> " INNER JOIN two ON one.id = two.id" >> ; >> sqlite3_stmt* pStmt; >> >> if ( sqlite3_prepare( db, sql, strlen(sql), &pStmt, NULL ) != SQLITE_OK ) >> { >> string str = "Cannot prepare sql: "; >> str += sql[t]; >> str += ", Error: "; >> str += sqlite3_errmsg(db); >> throw str.c_str(); >> } >> >> bool Loop = true; >> while ( Loop ) >> switch ( sqlite3_step( pStmt ) ) >> { >> case SQLITE_ROW: >> // retrieve the results >> char* p = (char *) sqlite3_column_text( pStmt, 0 ); >> string test1 = string( p ? p : "" ); >> >> p = (char *) sqlite3_column_text( pStmt, 1 ); >> string test2 = string( p ? p : "" ); >> >> break; >> case SQLITE_DONE: >> Loop = false; >> break; >> case SQLITE_BUSY: >> case SQLITE_LOCKED: >> default: >> string str = "Cannot execute sql: "; >> str += sql[t]; >> str += ", Error: "; >> str += sqlite3_errmsg(db); >> throw str.c_str(); >> break; >> } >> >> // clean up when finished >> sqlite3_finalize( pStmt ); >> >> sqlite3_close( db ); >> >> >> >> -- >> SqliteImporter and SqliteReplicator: Command line utilities for Sqlite >> http://www.reddawn.net/~jsprenkl/Sqlite >> >> Cthulhu Bucks! >> http://www.cthulhubucks.com >> >> ----------------------------------------------------------------------------- >> To unsubscribe, send email to [EMAIL PROTECTED] >> ----------------------------------------------------------------------------- >> LT> ----------------------------------------------------------------------------- LT> To unsubscribe, send email to [EMAIL PROTECTED] LT> ----------------------------------------------------------------------------- -- Best regards, Teg mailto:[EMAIL PROTECTED] ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------