Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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的简单列表-不是对象错误_Javascript_Sqlite - Fatal编程技术网

Javascript中SQLite的简单列表-不是对象错误

Javascript中SQLite的简单列表-不是对象错误,javascript,sqlite,Javascript,Sqlite,当我尝试执行简单脚本将数据库中的项目列表输出到页面上的无序列表时,控制台产生以下错误: TypeError: undefined is not an object (evaluating 'results.rows') 错误出现在两个地方:1)回调(结果);queryRunner()函数中的行,以及2)for循环中的results.rows.length 有关守则如下: //////////////////////////////// // Functions ///////////////

当我尝试执行简单脚本将数据库中的项目列表输出到页面上的无序列表时,控制台产生以下错误:

TypeError: undefined is not an object (evaluating 'results.rows')
错误出现在两个地方:1)回调(结果);queryRunner()函数中的行,以及2)for循环中的results.rows.length

有关守则如下:

////////////////////////////////
//  Functions
////////////////////////////////

// SQL query function
function queryRunner(input, callback) {

    // Needs to be in .transaction to work
    database.transaction(
        function( transaction ){

            // SQL Query
            transaction.executeSql(input);

        },function(err){

            console.log('errorCB: ' + err.code + '; Message: ' + err.message);

        },function( transaction, results ){

            console.log('queryRunner success!');

            // Make callback optional
            // Make sure only processes if functions included
            // i.e. ignore strings
            if(callback && typeof(callback) === 'function') { callback(results); 
            }

        }
    ); // end database.transaction

} // End queryRunner


////////////////////////////////
//  Testing
////////////////////////////////


    var databaseOptions = {
        fileName: "sqlite_WAtest",
        version: "1.0",
        displayName: "SQLite WA Test",
        maxSize: 1024
    }; // End databaseOptions



    var database = openDatabase(
        databaseOptions.fileName,
        databaseOptions.version,
        databaseOptions.displayName,
        databaseOptions.maxSize
    ); // End database

    queryRunner('DROP TABLE WORKOUTS');

    queryRunner('CREATE TABLE IF NOT EXISTS WORKOUTS (id INTEGER PRIMARY KEY AUTOINCREMENT, WOdate TEXT, WOtype TEXT);');

    queryRunner('INSERT INTO WORKOUTS (WOdate, WOtype) VALUES ("Test 1","Test 2")');

    queryRunner('INSERT INTO WORKOUTS (WOdate, WOtype) VALUES ("Test 3","Test 4")');

    queryRunner('INSERT INTO WORKOUTS (WOdate, WOtype) VALUES ("Test 5","Test 6")');

    queryRunner('SELECT * FROM WORKOUTS', function(results){

        // Simple loop to output results
        for(var num=0; num<results.rows.length; num++) {

            // Get the sql data into a variable
            var row = results.rows.item(num);

            // Add it to the page
            $('#output').append('<li>This row is ID: ' + row.id + '; WOdate: ' + row.WOdate + '; and WOtype: ' + WOtype + '.</li>');

        }

    });
////////////////////////////////
//功能
////////////////////////////////
//SQL查询函数
函数queryRunner(输入、回调){
//需要在。事务中才能工作
数据库事务(
职能(事务){
//SQL查询
transaction.executeSql(输入);
},函数(err){
console.log('errorCB:'+err.code+';Message:'+err.Message);
},功能(事务、结果){
log('queryRunner success!');
//使回调成为可选的
//确保仅在包含功能的情况下使用流程
//即忽略字符串
if(callback&&typeof(callback)=='function'){callback(results);
}
}
);//结束数据库事务
}//结束查询运行程序
////////////////////////////////
//测试
////////////////////////////////
var数据库选项={
文件名:“sqlite_WAtest”,
版本:“1.0”,
displayName:“SQLite WA测试”,
最大尺寸:1024
}; // 结束数据库选项
var database=openDatabase(
databaseOptions.fileName,
databaseOptions.version,
databaseOptions.displayName,
databaseOptions.maxSize
); // 端数据库
queryRunner(“升降台训练”);
queryRunner('CREATE TABLE IF NOT EXISTS WORKOUTS(id INTEGER主键自动递增,WOdate文本,WOtype文本);');
queryRunner(“插入训练(WOdate、WOtype)值(“测试1”、“测试2”));
queryRunner(“插入训练(WOdate、WOtype)值(“测试3”、“测试4”));
queryRunner(“插入训练(WOdate、WOtype)值(“测试5”、“测试6”));
queryRunner(“从训练中选择*”,函数(结果){
//输出结果的简单循环

对于(var num=0;num请浏览此处的文档:

executeSql从数据库中选择/获取行的语法不正确。它应采用以下格式:

db.transaction(function ( tx ) {
tx.executeSql('<QUERY>', '<QUERY PARAMS>', '<SUCCESS CALLBACK>', '<ERROR CALLBACK>' );
因此,您必须按如下方式更改代码:

// SQL query function
function queryRunner(database, input, callback) {

    // Needs to be in .transaction to work
    database.transaction(
        function( tx ){

            // SQL Query
            tx.executeSql(input , [], function( tx, results ){

            console.log('queryRunner success!');

            // Make callback optional
            // Make sure only processes if functions included
            // i.e. ignore strings
            if(callback && typeof(callback) === 'function') { callback(results); 
            }

        },function(err){

            console.log('errorCB: ' + err.code + '; Message: ' + err.message);

        });

        }); // end database.transaction

} // End queryRunner



////////////////////////////////
//  Testing
////////////////////////////////


var databaseOptions = {
    fileName: "sqlite_WAtest",
    version: "1.0",
    displayName: "SQLite WA Test",
    maxSize: 1024
}; // End databaseOptions



var database = openDatabase(
    databaseOptions.fileName,
    databaseOptions.version,
    databaseOptions.displayName,
    databaseOptions.maxSize
); // End database

queryRunner('DROP TABLE WORKOUTS');

queryRunner('CREATE TABLE IF NOT EXISTS WORKOUTS (id INTEGER PRIMARY KEY AUTOINCREMENT, WOdate TEXT, WOtype TEXT);');

queryRunner('INSERT INTO WORKOUTS (WOdate, WOtype) VALUES ("Test 1","Test 2")');

queryRunner('INSERT INTO WORKOUTS (WOdate, WOtype) VALUES ("Test 3","Test 4")');

queryRunner('INSERT INTO WORKOUTS (WOdate, WOtype) VALUES ("Test 5","Test 6")');

queryRunner('SELECT * FROM WORKOUTS', function(results){

    // Simple loop to output results
    for(var num=0; num<results.rows.length; num++) {

        // Get the sql data into a variable
        var row = results.rows.item(num);

        // Add it to the page
        $('#output').append('<li>This row is ID: ' + row.id + '; WOdate: ' + row.WOdate + '; and WOtype: ' + row.WOtype + '.</li>');

    }

});
//SQL查询函数
函数queryRunner(数据库、输入、回调){
//需要在。事务中才能工作
数据库事务(
功能(tx){
//SQL查询
tx.executeSql(输入,[],函数(发送,结果){
log('queryRunner success!');
//使回调成为可选的
//确保仅在包含功能的情况下使用流程
//即忽略字符串
if(callback&&typeof(callback)=='function'){callback(results);
}
},函数(err){
console.log('errorCB:'+err.code+';Message:'+err.Message);
});
});//结束数据库事务
}//结束查询运行程序
////////////////////////////////
//测试
////////////////////////////////
var数据库选项={
文件名:“sqlite_WAtest”,
版本:“1.0”,
displayName:“SQLite WA测试”,
最大尺寸:1024
};//结束数据库选项
var database=openDatabase(
databaseOptions.fileName,
databaseOptions.version,
databaseOptions.displayName,
databaseOptions.maxSize
);//结束数据库
queryRunner(“升降台训练”);
queryRunner('CREATE TABLE IF NOT EXISTS WORKOUTS(id INTEGER主键自动递增,WOdate文本,WOtype文本);');
queryRunner(“插入训练(WOdate、WOtype)值(“测试1”、“测试2”));
queryRunner(“插入训练(WOdate、WOtype)值(“测试3”、“测试4”));
queryRunner(“插入训练(WOdate、WOtype)值(“测试5”、“测试6”));
queryRunner(“从训练中选择*”,函数(结果){
//输出结果的简单循环

对于(var num=0;numThink--
length
是一个数组属性。我怀疑您想要的是
结果。行[I]。项(num)
(假设项是每个行索引上存在的函数)这是一个很大的帮助,我将重新读取数据库上的那些页面。显然,我在错误位上出现了错误/成功(database.transaction)然而,它应该在executeSql上。现在一切似乎都正常了。非常感谢!我已经尝试过了-不幸的是,我需要提高我的声誉,让它公开。我会继续尝试:)没关系。没问题:)
// SQL query function
function queryRunner(database, input, callback) {

    // Needs to be in .transaction to work
    database.transaction(
        function( tx ){

            // SQL Query
            tx.executeSql(input , [], function( tx, results ){

            console.log('queryRunner success!');

            // Make callback optional
            // Make sure only processes if functions included
            // i.e. ignore strings
            if(callback && typeof(callback) === 'function') { callback(results); 
            }

        },function(err){

            console.log('errorCB: ' + err.code + '; Message: ' + err.message);

        });

        }); // end database.transaction

} // End queryRunner



////////////////////////////////
//  Testing
////////////////////////////////


var databaseOptions = {
    fileName: "sqlite_WAtest",
    version: "1.0",
    displayName: "SQLite WA Test",
    maxSize: 1024
}; // End databaseOptions



var database = openDatabase(
    databaseOptions.fileName,
    databaseOptions.version,
    databaseOptions.displayName,
    databaseOptions.maxSize
); // End database

queryRunner('DROP TABLE WORKOUTS');

queryRunner('CREATE TABLE IF NOT EXISTS WORKOUTS (id INTEGER PRIMARY KEY AUTOINCREMENT, WOdate TEXT, WOtype TEXT);');

queryRunner('INSERT INTO WORKOUTS (WOdate, WOtype) VALUES ("Test 1","Test 2")');

queryRunner('INSERT INTO WORKOUTS (WOdate, WOtype) VALUES ("Test 3","Test 4")');

queryRunner('INSERT INTO WORKOUTS (WOdate, WOtype) VALUES ("Test 5","Test 6")');

queryRunner('SELECT * FROM WORKOUTS', function(results){

    // Simple loop to output results
    for(var num=0; num<results.rows.length; num++) {

        // Get the sql data into a variable
        var row = results.rows.item(num);

        // Add it to the page
        $('#output').append('<li>This row is ID: ' + row.id + '; WOdate: ' + row.WOdate + '; and WOtype: ' + row.WOtype + '.</li>');

    }

});