如何在不使用参数的情况下转义System.Data.SQLite中的字符串?我正在构建一个可能很大的INSERT查询。
string sql = "INSERT INTO Request (Col1, Col2, Col3) VALUES ";
bool hasValue = false;
foreach (TestItem item in order.Tests)
{
if (hasValue)
sql += ", ";
hasValue = true;
sql = sql + String.Format("('{1}', '{2}', '{3}')", sql, a, b, c);
}
using (SQLiteCommand command = new SQLiteCommand(sql, _database))
command.ExecuteNonQuery();
我可以将每个插入分解为一个单独的查询,但是自己逃避字符串会不会更有效率?我可以动态生成查询参数,但参数列表不能太大吗?
答案 0 :(得分:3)
如果您关注效率,我会考虑单独执行多个插入,使用参数(为安全起见),但在事务中。逐行插入SQLite性能非常糟糕,但如果您可以将所有插入包装在事务中,您将看到更好的性能。
这是一篇很好的文章:
https://www.jokecamp.com/blog/make-your-sqlite-bulk-inserts-very-fast-in-c/
为了进一步澄清,本文直接从SQLite链接到此常见问题解答,我觉得这很有帮助: