Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sqlite Insert语句未运行_Javascript_Sqlite - Fatal编程技术网

Javascript Sqlite Insert语句未运行

Javascript Sqlite Insert语句未运行,javascript,sqlite,Javascript,Sqlite,我的sqlite有以下代码来存储来自照相机的名称和图像。我从Eclipse控制台知道我正在获取名称和图像路径。console.log(addRecord)正在获取名称和映像路径,但我在事务行和queryDB函数上收到一条“cannot executeSql of undefined”消息,因此我认为我的insert语句出错了?此外,imageURI的数据类型文本是否正确?。谢谢你的帮助 function onDeviceReady() { var db = window.openD

我的sqlite有以下代码来存储来自照相机的名称和图像。我从Eclipse控制台知道我正在获取名称和图像路径。console.log(addRecord)正在获取名称和映像路径,但我在事务行和queryDB函数上收到一条“cannot executeSql of undefined”消息,因此我认为我的insert语句出错了?此外,imageURI的数据类型文本是否正确?。谢谢你的帮助

   function onDeviceReady() {
    var db = window.openDatabase("database", "1.0", "Profiles", 5000);
    if(db) {
console.log('The device is ready');
db.transaction(populateDB, errorCB, successCB, insertRecord); // only do stuff if db exists
}
else{
console.log('There is a problem');
}   
   function populateDB(tx) {
   tx.executeSql('DROP TABLE IF EXISTS USERS');//get rid of this once working?
   tx.executeSql('CREATE TABLE IF NOT EXISTS USERS (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, username VARCHAR NOT NULL, imagePath TEXT)');
   console.log('The table USERS is created');
   }
  //Insert the details
function insertRecord(tx) {
       userName = document.getElementById('userName').value;
       imagePath;
       var addRecord = 'INSERT INTO USERS (username, imagePath) VALUES ("' + userName + '","' + imagePath + '")';
       console.log(addRecord);
       tx.executeSql(addRecord, [userName, imagePath], queryDB, errorCB);
}

 // Query the database
function queryDB(tx) {
       var getUsers = "SELECT * FROM USERS ORDER BY id ASC', [], querySuccess, errorCB";
       db.transaction(function (tx) {
       tx.executeSql(getUsers, [], querySuccess, queryFailure);
    }, errorCB, successCB);
}

// Query the success callback

function querySuccess(tx, results) {
        console.log("You are in the querysuccess function");
}

// Transaction error callback

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

function queryFailure(err) {
      console.log("Error processing SQL: " + err.code);
}
// Transaction success callback

function successCB() {
      console.log('The db and table are working');
 }

标识符
queryFailure
未定义。添加以下功能:

function queryFailure(tx, results) {
    console.log("You are in the queryFailure function");
}
一旦运行它,就会看到调用了
queryFailure
函数,因为查询中有一个错误。这:

var getUsers = "SELECT * FROM USERS ORDER BY id ASC', [], querySuccess, errorCB";
应该是:

var getUsers = "SELECT * FROM USERS ORDER BY id ASC";

您没有显示调用
insertRecord
的代码。我现在已经包括了它(我想!)。这不是事务的工作方式。传递给
transaction
的第一个回调必须在事务完成后执行所有工作,并提交事务(或者它可能已被错误回滚)。在该代码中不可能调用
insertRecord
,您是从其他地方(可能是从表单提交中的事件处理程序)调用它而不传递事务。或者这就是您的意思<是的。看看它,你调用它时没有参数,但是函数签名说你应该传递事务。修复签名并在
insertRecord
内显式创建事务以插入该行。谢谢,当我需要处理该部分时,它将非常有用。