More on 'works only for small strings':

I replaced the sqlite3_exec code with sqlite3_prepare(),
sqlite3_step() and sqlite3_finalize() only to find that it produced
the same 'logic error' [SQLITE_ERROR] in the step() function.

Then, I changed the way I create the record (below) to where I
create an initial short record and then sequentially UPDATE each
column.  The UPDATE fails exactly when the total size of the
record exceeds 1024 bytes.  In the 'for' loop, it attempts 16 UPDATES
but fails after 8 of them, there being 128 bytes per column in the UPDATE.

The CL prog, sqlite3.exe displays a record of 1027 characters, the last 8
being blank.  I have done C++ gymnastics to triangulate this problem and
seems consistent with the assertion that I cannot create a record that
exceeds 1024 bytes, strange as that may seem.

Am now thinking there's something wrong with how sqlite gets compiled....
(using MS Vers 6 Visual Studio)
The sqlite source shows:
** This amalgamation was generated on 2008-04-16 15:43:25 UTC.

BTW, some SQL document referenced a 'size' attribute of the database having
a property of 'tiny', 'medium', or 'large'.  I have no idea what this might


The C++ code:
strSql.Format( "insert or replace into Event values( '%s', '%s', '%s', '%s',
'%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s',
'%s', '%s', '%s' );", strKey, szSQLDateTime, strArgs + " /t " + szDateTime,
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" );

sqlite3_exec( m_pdbData, strSql, &Callback, this, &lpszErr );  // this works

for( int i=0; i<16; i++ )  {
    if( !m_strMotionData[i].IsEmpty() )  {
        CString strQ;
        strQ.Format( "UPDATE Event SET MotionData%d = '%s' WHERE Key =
'%s';", i+1, m_strMotionData[i], strKey );
        if( sqlite3_exec( m_pdbData, strQ, &Callback, this, &lpszErr ) != 0
)  {  // fails when total record exceeds 1024 chars
             FireOnError( "update err" );
             FireOnError( m_strMotionData[i] ); // list data... shows 128
bytes of '0' chars
sqlite-users mailing list

Reply via email to