テーブル内の行が存在する場合はその行を更新し、 phonegap に存在しない場合はその行を作成するには、javascript呼び出しをsqliteにするにはどうすればよいですか。
現在、次のような行は google chrome で行を正常に作成します
transaction.executeSql("INSERT INTO "+tablename
+" (fieldName,fieldValue,fieldComment) VALUES
('"+name+"', '"+value+"', '"+comment+"');",[],
this.nullDataHandler, this.errorHandler);
ただし、次のことを試しても(ここから実行する必要があると思います:http://www.sqlite.org/lang_replace.html)、何も起こりません:
transaction.executeSql("REPLACE "+tablename+" (fieldName,fieldValue,fieldComment)
VALUES ('"+name+"', '"+value+"', '"+comment+"');",[],
this.nullDataHandler, this.errorHandler);
(これは呼び出した後です"CREATE UNIQUE INDEX uniqueName ON "+tablename+" ("+name+")";
)
同じことが起こります
transaction.executeSql("INSERT INTO OR REPLACE "+tablename+" (fieldName,fieldValue,fieldComment) VALUES ('"+name+"', '"+value+"', '"+comment+"');",[], this.nullDataHandler, this.errorHandler);
(「CREATE UNIQUE INDEX uniqueName ON "+tablename+" ("+name+")」を呼び出した後でもあります;)
そして
transaction.executeSql("DELETE FROM "+tablename+" where \"fieldName\" EQUALS "+name+";",[], this.nullDataHandler, this.errorHandler);
transaction.executeSql("INSERT "+tablename+" (fieldName,fieldValue,fieldComment) VALUES ('"+name+"', '"+value+"', '"+comment+"');",[], this.nullDataHandler, this.errorHandler);
問題のある呼び出しが例外をスローすることを期待して、呼び出しを try ステートメントで囲みましたが、何も起こりませんでした。
こんな質問をしているなんて信じられませんが、何週間も何もしていなかったので、質問する時が来たと思いました。JavaScript で sqlite をデバッグする方法を知っている人がいたら、教えてください。Windows 7 Dell Inspiron で、Google Chrome (ctrl+shift+i->resources->databases) でデータベースをテストしています。)