Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/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
不存在这样的表-在ionic应用程序中使用SQLitePlugin_Sqlite_Ionic Framework_Cordova Plugins - Fatal编程技术网

不存在这样的表-在ionic应用程序中使用SQLitePlugin

不存在这样的表-在ionic应用程序中使用SQLitePlugin,sqlite,ionic-framework,cordova-plugins,Sqlite,Ionic Framework,Cordova Plugins,我是爱奥尼亚的新手,正在开发一个需要将数据存储到本地数据库的应用程序。我正在使用SQLite插件(“”)。但在向表中插入值时会出现一个错误——“不存在这样的表”。代码如下所述。请告诉我有什么问题。谢谢 app.js- app.run(function($ionicPlatform, $cordovaSQLite) { $ionicPlatform.ready(function() { if(window.cordov

我是爱奥尼亚的新手,正在开发一个需要将数据存储到本地数据库的应用程序。我正在使用SQLite插件(“”)。但在向表中插入值时会出现一个错误——“不存在这样的表”。代码如下所述。请告诉我有什么问题。谢谢

app.js-

app.run(function($ionicPlatform, $cordovaSQLite) {
        $ionicPlatform.ready(function() {



                             if(window.cordova && window.cordova.plugins.Keyboard) {

                             cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
                             cordova.plugins.Keyboard.disableScroll(true);
                             }
                             if(window.StatusBar) {
                             StatusBar.styleDefault();
                             }

                             db = window.sqlitePlugin.openDatabase({name:"nextflow.db", location:'default'});

                            $cordovaSQLite.execute(db, 'CREATE TABLE IF NOT EXISTS Registration (id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, loginId TEXT, id TEXT)');

                             });
        });
controller.js-

$cordovaSQLite.execute(db, 'INSERT INTO Registration (baseUrl) VALUES (?)', [baseurl])
                                                     .then(function(result) {
                                                           console.log("Message saved successful, cheers!");


                                                           }, function(error) {
                                                           alert("Error on     saving: " + error.message);
                                                           });

尝试将您的app.js代码更改为以下代码。我相信你的语法可能不正确。另一种可能是,在调用INSERT之前,CREATE没有完成执行

app.run(function($ionicPlatform, $cordovaSQLite) {
    $ionicPlatform.ready(function() {
        if(window.cordova && window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
            cordova.plugins.Keyboard.disableScroll(true);
        }
        if(window.StatusBar) {
            StatusBar.styleDefault();
        }

        db = window.sqlitePlugin.openDatabase({name:"nextflow.db", location:'default'});

        db.transaction(function(tx) {
            tx.execute('CREATE TABLE IF NOT EXISTS Registration (id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, loginId TEXT, id TEXT)');
        }, function(error) {
            console.log('Transaction ERROR: ' + error.message);
        }, function() {
            console.log('Created table OK');
        });

    });
});
并将controller.js更改为以下内容

db.transaction(function(tx) {
            tx.execute('INSERT INTO Registration (baseUrl) VALUES (?)', [baseurl]);
        }, function(error) {
            console.log('Error on     saving: ' + error.message);
        }, function() {
            console.log('Message saved successful, cheers!');
        });
确保可以从代码的两个部分访问
db
变量。通常,我会使它全球化,更容易

--编辑--

当您试图使用
tx.execute
执行SQL时,必须将execute调用封装在
db.transatcion
函数中。如下图所示

db.transaction(function(tx) {
    tx.execute('CREATE TABLE IF NOT EXISTS ProfileDetail (id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, loginId TEXT, id TEXT)')
}, function(error) {
    console.log('Transaction ERROR: ' + error.message);
}, function() {
    console.log('Created table OK');
});
此外,我通常在程序的一个区域内一起创建所有表格。下面的代码将在一个事务中创建两个表

db.transaction(function(tx) {
    tx.execute('CREATE TABLE IF NOT EXISTS Registration (id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, loginId TEXT, id TEXT)');
    tx.execute('CREATE TABLE IF NOT EXISTS ProfileDetail (id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, loginId TEXT, id TEXT)')
}, function(error) {
    console.log('Transaction ERROR: ' + error.message);
}, function() {
    console.log('Created tables OK');
});

尝试将您的app.js代码更改为以下代码。我相信你的语法可能不正确。另一种可能是,在调用INSERT之前,CREATE没有完成执行

app.run(function($ionicPlatform, $cordovaSQLite) {
    $ionicPlatform.ready(function() {
        if(window.cordova && window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
            cordova.plugins.Keyboard.disableScroll(true);
        }
        if(window.StatusBar) {
            StatusBar.styleDefault();
        }

        db = window.sqlitePlugin.openDatabase({name:"nextflow.db", location:'default'});

        db.transaction(function(tx) {
            tx.execute('CREATE TABLE IF NOT EXISTS Registration (id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, loginId TEXT, id TEXT)');
        }, function(error) {
            console.log('Transaction ERROR: ' + error.message);
        }, function() {
            console.log('Created table OK');
        });

    });
});
并将controller.js更改为以下内容

db.transaction(function(tx) {
            tx.execute('INSERT INTO Registration (baseUrl) VALUES (?)', [baseurl]);
        }, function(error) {
            console.log('Error on     saving: ' + error.message);
        }, function() {
            console.log('Message saved successful, cheers!');
        });
确保可以从代码的两个部分访问
db
变量。通常,我会使它全球化,更容易

--编辑--

当您试图使用
tx.execute
执行SQL时,必须将execute调用封装在
db.transatcion
函数中。如下图所示

db.transaction(function(tx) {
    tx.execute('CREATE TABLE IF NOT EXISTS ProfileDetail (id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, loginId TEXT, id TEXT)')
}, function(error) {
    console.log('Transaction ERROR: ' + error.message);
}, function() {
    console.log('Created table OK');
});
此外,我通常在程序的一个区域内一起创建所有表格。下面的代码将在一个事务中创建两个表

db.transaction(function(tx) {
    tx.execute('CREATE TABLE IF NOT EXISTS Registration (id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, loginId TEXT, id TEXT)');
    tx.execute('CREATE TABLE IF NOT EXISTS ProfileDetail (id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, loginId TEXT, id TEXT)')
}, function(error) {
    console.log('Transaction ERROR: ' + error.message);
}, function() {
    console.log('Created tables OK');
});

尝试重新安装应用程序…如果你面对的是相同的,请确保将表格放置在某个位置,如果它在那里,请检查表格名称尝试重新安装应用程序…如果你面对的是相同的,请确保将表格放置在某个位置,如果它在那里,请检查表格名称..我尝试更改表格名称时出现错误。事务错误:tx.execute不是一个函数。(在“tx.execute”(“创建表,如果不存在ProfileDetail(id INTEGER主键自动增量、baseUrl文本、loginId文本、id文本)”)中,“tx.execute”未定义)必须遵循与上述相同的模式。将tx.execute函数环绕在db.transaction函数中。查看上面的编辑,我将以您的新错误为例…当我尝试更改表名时,它给出了一个错误。事务错误:tx.execute不是一个函数。(在“tx.execute”(“创建表,如果不存在ProfileDetail(id INTEGER主键自动增量、baseUrl文本、loginId文本、id文本)”)中,“tx.execute”未定义)必须遵循与上述相同的模式。将tx.execute函数环绕在db.transaction函数中。查看上面的编辑,我将以您的新错误为例。