2011-10-05 17 views
1
function populateDB(tx) 
{ 
    tx.executeSql('DROP TABLE IF EXISTS test'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS test(course TEXT, grade INTEGER)'); 
    tx.executeSql('INSERT INTO test(course,grade) VALUES ("Geography, World",90)'); 
    tx.executeSql('INSERT INTO test(course,grade) VALUES ("Health",92)'); 
    tx.executeSql('INSERT INTO test(course,grade) VALUES ("Literature, English",91)'); 
    tx.executeSql('INSERT INTO test(course,grade) VALUES ("Math 201",85)'); 
    tx.executeSql('INSERT INTO test(course,grade) VALUES ("Science 202",95)'); 
} 

function queryDB(tx) 
{ 
    tx.executeSql('SELECT * FROM test',[],querrySuccess,errorCB); 
} 

function querrySuccess(tx,results) 
{ 
    var len = results.rows.length; 
    alert("test TABLE: "+ len +"row(s) found"); 
    for(var i=0;i<n;i++) 
    { 
     console.log("Row = " + i + " COURSE = " + results.rows.item(i).course + " GRADE = " + results.rows.item(i).grade); 
    } 
} 

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

function successCB() 
{ 
    alert("Success!"); 
} 

function create_database() 
{ 
    var db = window.openDatabase("Database","1.0", "Demo DB", 200000); 
    db.transaction(populateDB,errorCB,successCB); 
    db.transaction(queryDB,errorCB); 
} 

在上面的代碼中,我創建了一個名爲test的新數據庫。函數create_database()在我的html表單加載時被調用。我的問題是,它顯示了顯示行數的警報,但是它提供了一個警告「Error processing SQL」,即它被重定向到errorCB函數。是嗎?我在做什麼錯誤? 在此先感謝從SQLEite DB從phoneGap檢索值的錯誤

回答

0

我會仔細看看您的代碼,但首先您的表中沒有任何主鍵。也許你可以測試是這樣的:

"CREATE TABLE IF NOT EXISTS test(ID INTEGER PRIMARY KEY AUTOINCREMENT, course TEXT, grade INTEGER)" 
+0

for wat?我粘貼的代碼只是一個示例代碼,我只是想看看數據庫集成如何與PhoneGap協同工作,並且我試着按照你的建議進行操作。它只是不起作用 – wOlVeRiNe

0

這是因爲db.transaction調用是異步。在上一次事務創建表和插入數據完成之前,您正試圖從數據庫讀取數據。您應該在第一次完成後啓動第二筆交易

0
use in callback function like this. 

tx.executeSql("CREATE TABLE IF NOT EXISTS test(ID INTEGER PRIMARY KEY AUTOINCREMENT, course TEXT, grade INTEGER)",[], function (tx, results) { 
     tx.executeSql('INSERT INTO test(course,grade) VALUES ("Geography, World",90)'); 
     tx.executeSql('INSERT INTO test(course,grade) VALUES ("Health",92)'); 
     tx.executeSql('INSERT INTO test(course,grade) VALUES ("Literature, English",91)'); 
     tx.executeSql('INSERT INTO test(course,grade) VALUES ("Math 201",85)'); 
     tx.executeSql('INSERT INTO test(course,grade) VALUES ("Science 202",95)'); 

     tx.executeSql('SELECT * FROM test',[],function(result){ 


     },function(error) { 
      alert("erorr..." + error); 
     }); 
});