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]
-----------------------------------------------------------------------------

Reply via email to