2017-06-05 76 views
-3

我想改變sqlite數據庫中的sql長度限制,使用c#連接。 有人可以幫我嗎?Sqlite重新定義SQLITE_MAX_SQL_LENGTH c#

這裏是sqlitecommand:

json字符串是一個非常大的字符串。

try 
{ 
    string sql = "INSERT INTO SIP_JSON (sip_code, json) VALUES (" + nextSipCode 
      + ",'" + json + "')"; 
    connection.Open(); 
    SQLiteCommand command = new SQLiteCommand(sql, connection); 
    command.ExecuteNonQuery(); 
} 
catch (Exception e) 
{ 
    throw new Exception(Exceptions.GATEWAYDB_INSESRTSIPJSON_EXCEPTION, e); 
} 
finally 
{ 
     connection.Close(); 
} 

的例外是:內存

+1

如果您遇到問題,您可以發佈您已經嘗試過的解決方案,並提供[最小,完整和可驗證的示例](https://stackoverflow.com/幫助/ MCVE)。我建議閱讀[如何問](http://stackoverflow.com/help/how-to-ask)一個很好的問題。此外,一定要採取[旅遊](https://stackoverflow.com/tour) –

+1

超過該限制的錯誤消息將是「語句太長」。 *是那個JSON的長度?你爲什麼不使用SQL參數? –

+0

以上所有內容,加上[從此SQLite文檔頁面的第3部分](https://www.sqlite.org/limits.html)**(a)**您只能在運行時降低_ **此值(即在連接字符串中) - 你需要重新編譯SQLite來提升它;和**(b)**你不應該這樣做 - 使用準備好的陳述和裝訂。 – TripeHound

回答

1

感謝TripeHound,我改變我的查詢使用準備好的語句。

try 
       { 
        connection.Open(); 
        SQLiteCommand command = new SQLiteCommand(connection); 
        command.CommandText = "INSERT INTO SIP_JSON (sip_code, json) VALUES (?,?)"; 
        command.Parameters.Add(new SQLiteParameter("sip_code",nextSipCode)); 
        command.Parameters.Add(new SQLiteParameter("json", json)); 
        command.ExecuteNonQuery(); 
       } 
       catch (Exception e) 
       { 
        throw new Exception(Exceptions.GATEWAYDB_INSESRTSIPJSON_EXCEPTION, e); 
       } 
       finally 
       { 
        connection.Close(); 
       }