1

テーブル内の行が存在する場合はその行を更新し、 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) でデータベースをテストしています。)

4

0 に答える 0