2012-09-24 33 views
1

我使用SQLite作爲我的PhoneGap的數據庫,但該變量的值不會tx.execute語句被接受接受價值SQLite的執行語句

var name=document.getElementByID("Txtname").value; 
var age=document.getElementByID("Txtage").value; 
    function populateDB(tx) 
{  
    tx.executeSql('DROP TABLE IF EXISTS DEMO'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)'); 
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, '"+name+"')'); 
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, '"+age+"')'); 

回答

1

只是用這個簡單的字符串連接。

executeString = "INSERT INTO DEMO (id,data) VALUES (1,'"+name+"')"; 
tx.executeSql(executeString); 
+0

這也沒有工作 – dennis

0

我不知道事情的PhoneGap是如何工作的,但我認爲你需要封裝你的查詢在雙引號",而不是單引號'

tx.executeSql("DROP TABLE IF EXISTS DEMO"); 
tx.executeSql("CREATE TABLE IF NOT EXISTS DEMO (id unique, data)"); 
tx.executeSql("INSERT INTO DEMO (id, data) VALUES (1, '" + name + "')"); 
tx.executeSql("INSERT INTO DEMO (id, data) VALUES (2, '" + age + "')"); 
+0

我曾經嘗試這樣做,這也沒有工作 – dennis

+0

你確定是在第一個地方創建了數據庫/表?卸載你的應用程序,然後嘗試 – waqaslam

1

中的jsfiddle或類似的嘗試。 (jsfiddle example

db = window.openDatabase('demo',1,'demo',1024); 
db.transaction(function(tx) { 
    tx.executeSql("CREATE TABLE demo (`id` unique, `data`);"); 
    var query = "INSERT INTO `demo` (id,data) VALUES(?,?);"; 
    var values = [1,"abc"]; 
    tx.executeSql(query, values); 
}); 

或內嵌

db = window.openDatabase('demo',1,'demo',1024); 
db.transaction(function(tx) { 
    tx.executeSql("CREATE TABLE demo (`id` unique, `data`);"); 
    var name = "abc"; 
    tx.executeSql("INSERT INTO demo (`id`,`data`) VALUES(2,'"+name+"');"); 
}); 

*注意:如果您嘗試第一個,然後第二個例子中,它會因爲你的再次嘗試,然後創建表,因爲ID不是唯一的失敗,這可能是你的原始問題。

在控制檯中不會出現任何錯誤。最好通過提供成功/錯誤處理程序來查看發生了什麼。

db = window.openDatabase('demo', 1, 'demo', 1024); 
db.transaction(function(tx) { 
    var name = "abcd"; 
    tx.executeSql("INSERT INTO demo (`id`,`data`) VALUES(1,'" + name + "');", [], successHandler, errorHandler); 
}); 

function errorHandler(transaction, error) { 
    alert("Error : " + error.message); 
} 

function successHandler(transaction, result) { 
    alert("Success : " + result.rowsAffected + " rows affected"); 
}