2012-01-26 5 views
3

PhonetapでSQLiteにDemoというテーブルがあります。私はそれにいくつかの値を挿入しました。今私は1つのレコードを更新したい。 * 0警告:私はこのクエリを投げるときPhonegapでSQLite Updateクエリが機能しない

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000); 

db.transaction(updatemonthSaveingDB, errorCB); 

function updatemonthSaveingDB(tx) 
{ 
    tx.executeSql("UPDATE DEMO SET data = " + submitval + " WHERE id = " + 8, [], updateCB, errorCB); 
} 

function errorCB(err) 
{ 
    alert("Error processing SQL: " + err.code); 
} 

は今、それは* エラー処理SQLを示しています。

答えて

0

私は、あなたの取引が実際に成功していると考えています。このSQLiteエラーコード表(http://www.sqlite.org/c3ref/c_abort.html)を見てみると、エラーメッセージ "0"は "/ * Successful result */"

"updateCB"が実際に関数ではない場合(ここで定義していない)、errorCBが成功コールバックとして読み込まれ、結果として呼び出される可能性がありますか?あなたは間違って「使用しているので、sqliteのは、クエリとして「UPDATE DEMOのSETデータ=」を考える。この機能で

6

問題はSQLiteのクエリ内の変数を渡す方法が間違っていている

function updatemonthSaveingDB(tx) 
{ 
tx.executeSql("UPDATE DEMO SET data = " + submitval + " WHERE id = " + 8, [], updateCB, errorCB); 
} 

。 正しい方法は次のとおりです。各列の値beetween

 function updatemonthSaveingDB(tx) 
{ 
    tx.executeSql("UPDATE DEMO SET data ='" +submitval+"' WHERE id = '"+8+"' ;", [], updateCB, errorCB); 
} 
+0

なぜ機能するのですか?あなたが説明できるなら、あなたの答えはかなり良いでしょう。 – Ben

+0

なぜパラメータ化クエリを使用しないのですか? tx.executeSql( "UPDATE DEMO SETデータ=?WHERE id =?"、[submitval、8]、updateCB、errorCB); –

0

与えるの引用''

Iアル[], updateCB, errorCB);を削除してください。 updateCBerrorCBの機能が宣言されていないと機能しません。

私はコードを更新します。私のために働く。

function updatemonthSaveingDB(tx) 
{ 
    tx.executeSql("UPDATE DEMO SET data='" + submitval + "' WHERE id='8'"); 
} 
関連する問題