0

次の Phonegap SQLlite 挿入ステートメントがあります。

tx.executeSql('insert into "'+gAppConfig.configTable+'" (key , value) values("uniqueId","'+uniqueId+'")' , [] , querySuccess, errorQuery); 
            

両方の列がテキスト データ型ですが、挿入クエリが機能していません。

uniqueId は、「e72361c6」のようなランダムな 8 文字の文字列です。奇妙なことに、「e7231c6」を直接挿入すると機能します。変数で機能しないのはなぜですか?ここでもう 1 つ注意すべき点は、サーバー データベースに格納されている値を復号化することによって、ランダムな文字列が生成されていることです。サーバーで8ビットのランダム文字列を復号化して取得しています。復号化された値はデバイスに送信され、変数に保存され、問題が発生するデータベースに挿入されます。

挿入直前の文字列をアラートすると、正しい 8 文字の文字列が表示されます。一方、復号化せずにサーバーから 8 文字の文字列を送信すると、挿入は成功します。おそらく、エンコード/デコード文字列形式と関係があります。

4

2 に答える 2

0

SQL では、テーブル/列名などの識別子には二重引用符を使用する必要がありますが、文字列には単一引用符を使用する必要があります。(他の引用符は、他の DB との互換性のためにサポートされていますが、誤解される可能性があります。)

INSERT INTO "MyTable"("col1", "col2")
VALUES ('ABC', 'xyz')
于 2012-12-22T11:58:04.677 に答える
0

「uniqueId」をNULLに置き換えるだけです

tx.executeSql('insert into "'+gAppConfig.configTable+'" (key , value) values(null,"'+uniqueId+'")' , [] , querySuccess, errorQuery);

または、これを使用できます

tx.executeSql('insert into "'+gAppConfig.configTable+'" (value) values("'+uniqueId+'")' , [] , querySuccess, errorQuery);

通常の SQL サーバーではなく、SQLiteを扱っていることを思い出してください。

于 2012-12-20T12:49:13.253 に答える