単一の列を持つデータベースがあり、このように作成します
function populateDB(tx){
tx.executeSql('CREATE TABLE IF NOT EXISTS RESULT(result, UNIQUE(result))');
}
ただし、オブジェクトをテーブルに書き込もうとすると、次のエラーが発生します。
ステートメントを実行できませんでした (19 制約が失敗しました)
このエラーは、NOT NULL および PRIMARY KEY をセットアップに追加した場合にのみ表示されます。それがないと、データベースに重複を書き込み続けます(phonegap iOSアプリケーションの起動時にデータベースにWebサービスからのデータを入力するため、データベースレベルで重複行をキャッチしたい)
最初は「PRIMARY KEY」しかありませんでしたが、エラーは制約について何かを示しているため、主キーは「NOT NULL」でなければならないと想定していましたが、コードに追加しても同じエラーが発生しました。
どうすればこれを解決できますか。前もって感謝します
編集:おそらく、文字列化された JSON オブジェクトを結果列に書き込むことを知っておくことが重要です。
edit : この関数にオブジェクトを挿入します。基本的に私はそれを一つずつ行います:
this.save = function(){
db.transaction (function(transaction){
object = $.toJSON(self);
object = encodeURI(object);
transaction.executeSql('INSERT INTO RESULT (result) VALUES ("'+object+'")');
},
errorCB,
successCB
);
}
編集: セットアップ テーブル コードを更新しました。エラーはすべての行で発生するわけではありませんが、オブジェクトは実際には一意です。