2017-06-05 1 views
-3

sqlite DBのSQL長の制限を、C#接続を使用して変更しようとしています。 誰かが私を助けることができる、pls?ここで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)**この値は実行時に** _ lower _ **のみ可能です(つまり、接続文字列内で)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(); 
       } 
関連する問題