簡體   English   中英

如何在沒有准備好的語句的情況下在 System.Data.SQLite 中轉義字符串

[英]How to escape string in System.Data.SQLite without prepared statements

如何在不使用參數的情況下轉義 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();

我可以將每個插入分解為一個單獨的查詢,但是自己轉義字符串不是更有效嗎? 我可以動態生成查詢參數,但是參數列表不能太大嗎?

如果您關心效率,我會考慮單獨執行多個插入,帶參數(為了安全),但在事務內。 SQLite 在逐行插入時性能很差,但是如果您可以將所有插入都包裝在一個事務中,您將看到更好的性能。

這是一篇關於這個的好文章:

https://www.jokecamp.com/blog/make-your-sqlite-bulk-inserts-very-fast-in-c/

為了進一步澄清,這篇文章直接從 SQLite 深度鏈接到這個常見問題,我覺得這很有幫助:

http://www.sqlite.org/faq.html#q19

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM