https://github.com/SRombauts/SQLiteCpp
SQLite::Database db("example.db3");
while(...)
{
db.exec("INSERT INTO xxx VALUES(...)");
}
这是SQLite用于插入数据的示例代码。如果没有事务,则每个db.exec
都很慢,几乎需要1秒。
因此,您需要一个事务:
db.exe("BEGIN");
while(...)
{
db.exec("INSERT INTO xxx VALUES(...)");
}
db.exe("END");
但如果我将所有查询都放在一个字符串中:
db.exec("INSERT INTO xxx VALUES(...);\
INSERT INTO xxx VALUES(...);\
INSERT INTO xxx VALUES(...);\
...
");
我还需要交易吗?
1条答案
按热度按时间v6ylcynt1#
如果你想插入‘一切’或‘什么都没有’,那么,是的。你仍然需要一笔交易。在没有事务的情况下,
SQLite::Database::exec()
内部调用sqlite3_exec()
和分号分隔的SQL语句将不会自动执行。