Phonegap数据库错误 [英] Phonegap Database error

查看:220
本文介绍了Phonegap数据库错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图为我的手机差距应用程序设置数据库。问题是除了设置表的所有事务产生错误说

I am trying to set up a database for my phone gap application. the problem is all the transactions apart from the ones setting up the table produce an error saying

SQLTransactionCallback为null或抛出异常

"the SQLTransactionCallback was null or threw an exception"

这里是代码

function Datasetup()
{
   db=window.openDatabase("PracticeData","1.0","saveData",300000);
   alert("1");
   db.transaction(getDB,onDBError,onDBSuccess);
}
function onDBError(error)
{
    alert("Database Error"+error.message);
}

function onDBSuccess(tx,results)
{
    alert("successfull");
}

function getDB(tx)
{
   alert("2");
   tx.executeSql("CREATE TABLE IF NOT EXISTS session(date,length,activity,pieces)");
   alert("3");
   tx.executeSql("CREATE TABLE IF NOT EXISTS                         pieces(newpiece,name,composer,youtube,images_src,date_Added)");
   alert("4");
   tx.executeSql('SELECT * FROM session', [], onSelectSessionSuccess, onDBError());
   tx.executeSql("SELECT * FROM session",[],onSelectSessionSuccess,onDBError());
   alert("5");
   tx.executeSql("SELECT * FROM pieces",[],onSelectPiecesSuccess,onDBError());
 }

 function savepiece(tx)
 {
    tx.executeSql("INSERT INTO          NOTES(newpiece,name,composer,youtube,images_src,date_Added)VALUES(?,?,?,?,?,?)",[true,pieceData.name,pieceData.composer,"tube","images",date()]);
 }



我没有得到这个或创建表的错误meseges



I don't get the error meseges for this or the create table

       db.transaction(getDB,onDBError,onDBSuccess)

我收到错误消息

        tx.executeSql('SELECT * FROM session', [], onSelectSessionSuccess, onDBError());

        tx.executeSql("SELECT * FROM session",[],onSelectSessionSuccess,onDBError());
         alert("5");
        tx.executeSql("SELECT * FROM pieces",[],onSelectPiecesSuccess,onDBError());

这是一个很大的帮助,现在我的选择工作的另一个,但是出现

that was a great help now one of my selects work the other one however comes up with

语句回调引发了一个异常或语句错误回调未返回false

这里是不工作的sql

here's the sql that's not working

     tx.executeSql('SELECT * FROM session', [],onSelectPiecesSuccess, onDBError);

这里是更新的代码

    function Datasetup(){

db=window.openDatabase("PracticeData","1.0","PracticeData",300000);
db.transaction(getDB,onDBError,onDBSuccess);
    }

    function onDBError(error){
alert("Database Error "+error.message);
    }
            function onDBSuccess(tx,results){
        //db.transaction(query,onDBError);
db.transaction(query,onDBError);
        alert("before");

    }


    function getDB(tx){
//alert("dropping")
//tx.executeSql("DROP TABLE pieces");

tx.executeSql("CREATE TABLE IF NOT EXISTS session(date,length,activity,pieces)");
tx.executeSql("CREATE TABLE IF NOT EXISTS pieces(newpiece,name,composer,youtube,images_src,date_added)");
//tx.executeSql('INSERT INTO session(date, length, activity,pieces) VALUES ("10-2-12", "15","2","11")');
//tx.executeSql('INSERT INTO session (date, length, activity,pieces) VALUES ("11-2-12", "15","2","11")');
//tx.executeSql('INSERT INTO session (date, length, activity,pieces) VALUES ("12-2-12", "15","2","11")');*/
tx.executeSql('INSERT INTO session (date, length, activity,pieces) VALUES ("13-2-12", "15","2","violin")');
tx.executeSql('INSERT INTO pieces (newpiece, name, youtube,images_src,date_Added) VALUES ("true", "15","tube","11",13-9-13)');
//tx.executeSql("DROP TABLE pieces");
//tx.executeSql("DROP TABLE session");
//alert("vi");
    }
            /**sessions**/
            function query(tx){ 
tx.executeSql('SELECT * FROM session', [], onSelectSessionSuccess, onDBError);
    }
    function onSelectSessionSuccess(tx,results){
dbResult = results;
var len= results.rows.length;
var sessionList="";

for(var i=0;i<len;i++)
{
    sessionList = sessionList+"<li>"+results.rows.item(i).date+"</li>"
}
alert(sessionList);
//tx.executeSql("SELECT * FROM pieces",[],onSelectPiecesSuccess,onDBError());
db.transaction(piecesquery,onDBError);
    }

    /**pieces**/
            function piecesquery(tx){
//alert("piecesquery");
tx.executeSql('SELECT * FROM session', [],onSelectPiecesSuccess, onDBError);
    }
    function onSelectPiecesSuccess(tx,results){
var len= results.rows.length;
var PiecesList="";
var newPiecesList="";
var res;
alert(len);
for(var i=0;i<len;i++)
{
    newPiecesList=newPiecesList+"<li>"+results.rows.item(i).newpiece + results.rows.item(i).composer +"</li>"
}
alert(newPiecesList);
$('#newPiecesList').innerHTML(newPiecesList);

    }

我的流程:
表创建并填充getDB。
会话数据被getDb的成功拉。
件数据在会话页启动时被拉。但我可以替换代码拉表块与代码拉从会话表没有问题。
出于某种原因看起来不能访问pieces表中的数据

my flow: the tables are created and populated getDB. session data is pulled on the success of getDb. pieces data is pulled when the session page initiates. But i can replace the code to pull the pieces table with the code to pull from session table with no problems. for some reason it seems that the data going into the pieces table isn't accessible

推荐答案

创建,插入和选择过程。希望它将是有用的。

I have done table creation,insert and select process.Hope it will be useful.

var db=null;
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {

    db = window.openDatabase("TestDatabase","1.0","TestingDatabase",'200000000');

    alert("db1");
    db.transaction(populateDatabase,errorDb,successDb);


}
 function populateDatabase(tx){

    tx.executeSql('DROP TABLE IF EXISTS TestTable');
    tx.executeSql('CREATE TABLE IF NOT EXISTS TestTable(RollNo INT PRIMARY KEY,FirstName text,LastName text,MobileNo text)');

    tx.executeSql('INSERT INTO TESTTABLE (RollNo, FirstName, LastName, MobileNo) VALUES (1, "Nisari", "Balakrishnan", "8891924207")');
    tx.executeSql('INSERT INTO TESTTABLE (RollNo, FirstName, LastName, MobileNo) VALUES (2, "Mikhil", "Anandan", "9605432101")');

}
function queryDB(tx) {
  tx.executeSql('SELECT * FROM TESTTABLE', [], querySuccess, errorCB);
}
function querySuccess(tx, results) {
    var len = results.rows.length;
    alert(len);
    console.log("DEMO table: " + len + " rows found.");
    for (var i=0; i<len; i++){
        //console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
        alert("Row = " + i + " ID = " + results.rows.item(i).RollNo + " FirstName =  " + results.rows.item(i).FirstName + " LastName =  " + results.rows.item(i).LastName + " MobileNo =  " + results.rows.item(i).MobileNo);

//            db = window.openDatabase("TestDatabase","1.0","TestingDatabase",'200000000');
//            db.transaction(updateDB, errorCB);
//            console.log("After Open DB");


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



function errorDb()
{
    alert("Error on Database creation:" + Error);
}
function successDb()
{
    alert("Database is created successfully");
          db = window.openDatabase("TestDatabase","1.0","TestingDatabase",'200000000');
    db.transaction(queryDB, errorCB);
}

这篇关于Phonegap数据库错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆