>----- Original Message ----
>From: Pavel Ivanov <paiva...@gmail.com>
>To: General Discussion of SQLite Database <sqlite-users@sqlite.org>
>Sent: Wed, February 3, 2010 11:37:17 AM

>Just first thought came to my mind: are you sure that 2 versions of
>code mentioned do the same thing? In particular I'm asserting that
>second version (under #if 1) doesn't do any actual updating and
>doesn't change your database because you have wrong parameter indexes.

You are right! 
Retraction. Mea Culpa. Back to square one… 
The modified code did not write anything to the drive! But there was no error 
message from the SQLITE.
After proper indexing the writing time is about the same!

>And one more question: why don't you store your prepared statement
>somewhere and do not prepare it for each row again and again?

I will. But the problem highlighted by my mistake with indexes is not with the 
prepared statement,
but extremely slow write to the drive.

int UpdateNotesRecord(sqlite3 *handle,
             int idArg,
             CString note)
{
    sqlite3_stmt *stmt;
    int rc;

#if 1 // 100 updates with 5 character string take 12 seconds
 
    char *sql = "UPDATE notes SET note=? WHERE id=?";
    rc = sqlite3_prepare_v2(handle, sql, (int) strlen(sql), &stmt, 
NULL/*&tail*/);
    if(rc) PrintError("UPDATE prepare_v2",rc,handle);

    // idArg
               rc = sqlite3_bind_int(stmt, 1, idArg); 
// was:     rc = sqlite3_bind_int(stmt, 2, idArg);
    if(rc) PrintError("bind idArg error",rc,handle);

    // note
    int byteCount = note.GetLength();
    char *p = note.GetBuffer();
    
              rc = sqlite3_bind_text(stmt, 1, p, byteCount, SQLITE_STATIC); 
// was     rc = sqlite3_bind_text(stmt, 2, p, byteCount, SQLITE_STATIC);
    if(rc) PrintError("bind note text error",rc,handle);
#endif

    rc = sqlite3_step(stmt);
    if(rc != SQLITE_DONE)
        PrintError("update step error",rc,handle);

    rc = sqlite3_finalize(stmt);
    if(rc) PrintError("finalize update error",rc,handle);
    return rc;
}

Is there any way to configure database for efficient updates of small amount of 
text?

Thank you for reading. Any comment greatly appreciated.
Samuel 


      __________________________________________________________________
Make your browsing faster, safer, and easier with the new Internet Explorer® 8. 
Optimized for Yahoo! Get it Now for Free! at 
http://downloads.yahoo.com/ca/internetexplorer/
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to