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