【问题标题】:Error in executeSql queryexecuteSql 查询出错
【发布时间】:2015-04-20 12:03:55
【问题描述】:

我正在开发一个 Cordova 应用程序,我需要在其中创建一个登录名和一个寄存器。但是在运行该应用程序时我收到一个名为“错误处理 SQL:未定义”的错误。我知道我收到此错误是因为insertUSERREG 中的 executeSql。但我不知道为什么会出现这个错误。请帮忙。

html 文件:

 <form method="get" action="" onsubmit="return RegisteringUsers()">
        <fieldset class="ui-field-contain">
        <label for="name">Name:</label>
        <input type="text" name="name" id="name" value="" placeholder="Name"/>
        <label for="username">Account User Name:</label>
        <input type="text" name="username" id="username" value="" placeholder="User Name"/>
        <label for="email">Email: </label>
        <input type="email" name="email" id="email" value="" placeholder="Email"/>
        <label for="password">Password: </label>
         <input type="password" name="password" id="password" value="" placeholder="Your Password" autocomplete="off"/>
         <input type="Submit" name="submit" id="submit" value="Register" />
      </fieldset>
    </form>

javascrpit 文件:

document.addEventListener("deviceready", onDeviceReady, false);
var db ;
function onDeviceReady() {
     db = window.openDatabase("Database", "1.0", "Cordova Demo",2000000000);
    db.transaction(createDB, error1, successCB);
    window.localStorage.setItem("user","Not Logged In");
}

function createDB(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS USERSREG (db_name,db_una,db_email,db_password)');
    tx.executeSql('DROP TABLE IF EXISTS CARTORDER ');
    tx.executeSql('CREATE TABLE IF NOT EXISTS CARTORDER (db_una, db_itemName, db_itemPrice , db_qty)');
}
function errorCB(err) {
    alert("Error processing SQL: "+err.code);
}

function successCB() {

}  



 function RegisteringUsers(){   
 db.transaction(insertUSERREG, error2); 

 return false;
}  
 function insertUSERREG(tx){   
    var insertname = $('[name="name"]').val();
    var insertuna= $('[name="username"]').val();
    var insertemail= $('[name="email"]').val();
    var insertpassword= $('[name="password"]').val();           
    var sql='INSERT INTO USERSREG (db_name,db_una, db_email,db_password) VALUES (?, ?,?,?)';



     tx.executeSql(sql, [insertname ,insertuna,insertemail,insertpassword] ,SuccessqueryDB, errorCB);

 }
 function SuccessqueryDB(tx) {
    alert("Registered Sucessfully");
        $.mobile.changePage ("Home.html",{reverse: false,transition :"pop"});
} 
 function error2 () {
  alert("error2");
  }

【问题讨论】:

    标签: jquery html database cordova


    【解决方案1】:

    我可以建议一些可能出错的项目:

    1. tx 未定义
    2. 其中之一:insertname、insertuna、insertemail、insertpassword 未定义。

    您可以使用 alert() 和 console.log 来检查它们的值。

    【讨论】:

    • 我已经尝试对这些变量使用 alert() 并且我得到了正确的输出。我使用了 console.log(tx);但我没有得到任何输出。
    • 你能在errorCB中试试alert(err.message)吗​​?可能是 err.code 由于某种原因未定义。
    • 检查了一下,我得到“未定义”
    • 另一个建议 - 您可以将数据库名称更改为不同的名称:window.openDatabase("Database12345", "1.0", "Cordova Demo",2000000000);?
    • 然后我收到消息“注册成功”但之后我也从 RegisteringUsers() 收到错误消息 error2..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多