Thanks, Mike. Because, each record has different barcode, tagtype, and printdata. That means, I need to call:
sprintf( sqlcmd, "INSERT INTO TEST( BARCODE, TAGTYPE, PRINTDATA ) VALUES( %s, %d, ? );", chrBarCode, tagtype ); rc = sqlite3_prepare( db, sqlcmd, -1, &stat, 0 ); to update the contents of the each records inside the loop. Am I right? Any suggestion? Thanks. WenYuan --- Michael Ruck <[EMAIL PROTECTED]> wrote: > You should only prepare the statement once before > the loop. The only thing > you should do in the loop itself is bind varying > data and call sqlite_step. > There's no need to call prepare, reset, finalize > inside the loop. If > chrPrintData doesn't change you can also move > bind_blob in front of the > loop. > > Mike > > -----Ursprüngliche Nachricht----- > Von: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] Im Auftrag > von Yang WenYuan > Gesendet: Mittwoch, 9. April 2008 06:08 > An: sqlite-users@sqlite.org > Betreff: [sqlite] WinCE Memory Problem > > I use the Sqlite in the PDA which is WinCE OS. I > need to add more than > 200,000 records. I used sqlite3_prepare-> > sqlite3_bind_blob->sqlite3_step->sqlite3_finalize to > write each record in to > Database. However, I found that after each record is > inserted, the PDA > memory became larger and larger. In the end, the > whole PDA memory is > occupied by this application and the system halt. Is > there any thing I miss > to release the memory? > Following is my code: > > sqlite3 *db; > sqlite3_stmt * stat; > char *zErrMsg = 0; > char sqlcmd[ 512 ]; > int rc; > char chrBarCode[ 16 ], chrPrintData[ 512 ]; int > tagtype; > > > > for( i = 0; i < 2000000; i ++ ) > { > sprintf( sqlcmd, "INSERT INTO TEST( BARCODE, > TAGTYPE, PRINTDATA ) > VALUES( %s, %d, ? );", chrBarCode, tagtype ); > > rc = sqlite3_prepare( db, sqlcmd, -1, &stat, 0 ); > if( rc != SQLITE_OK ) > { > sqlite3_close(db); > return -1; > } > > rc = sqlite3_bind_blob( stat, 1, chrPrintData, > length, NULL ); > if( rc != SQLITE_OK ) > { > sqlite3_close(db); > return -1; > } > > rc = sqlite3_step( stat ); > if( rc != SQLITE_DONE ) > { > sqlite3_close(db); > return -1; > } > > rc = sqlite3_reset( stat ); > if( rc != SQLITE_OK ) > { > sqlite3_close(db); > return -1; > } > > rc = sqlite3_finalize( stat ); > if( rc != SQLITE_OK ) > { > sqlite3_close(db); > return -1; > } > > } > > > WenYuan > > > > > ______________________________________________________________________ > Search, browse and book your hotels and flights > through Yahoo! Travel. > http://sg.travel.yahoo.com > _______________________________________________ > 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 > ______________________________________________________________________ Search, browse and book your hotels and flights through Yahoo! Travel. http://sg.travel.yahoo.com _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users