> -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Kodok Márton > Sent: Monday, August 11, 2008 2:21 PM > To: General Discussion of SQLite Database > Subject: [sqlite] multiple inserts > > Hi, > > Does SQLite accepts multiple insert? > insert into table (col1,col2) values (val1,val2), > (val3,val4), (val5,val6)
No. > If not, how can I speed up large inserts? > eg: 1000 rows > Here is a quick shot: Just use a transaction surrounding your INSERTs, and use prepared statements and parameter bindings to prevent multiple parsing. --------------------- char* errmsg = NULL; sqlite3* db = NULL; db = open( ....) // begin transaction sqlite3_exec( db, "BEGIN TRANSACTION", NULL, NULL, &errmsg); // prepare for multiple inserts sqlite3_stmt* stmt = sqlite3_prepare_v2( "INSERT INTO T1 (C1, C2, C3) VALUES (?, ?, ?)") -for-each-row // read doc for sqlite3_bind_* carefully!! sqlite3_bind_int( stmt, 1, someIntVariable); sqlite3_bind_text( stmt, 2, -1, "hello", SQLITE_STATIC); sqlite3_bind_text( stmt, 3, -1, pzSomeString, SQLITE_TRANSIENT); sqlite3_step(stmt); // executes the INSERT sqlite3_reset(stmt); // important! Clears the old values, makes the statement accept new parameters. -end-for-each sqlite3_finalize(stmt); // clean up prepared statement // begin transaction sqlite3_exec( db, "COMMIT", NULL, NULL, &errmsg); // COMMIT all dirty pages at once --------------------- Regards, Stefan. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users