我正在使用Ionic / Cordova SQLite插件,我希望能够在调用特定函数之前检查数据库是否存在。如果我使用openDatabase("db", "", "name", dbSize, function() { };
,只有在没有数据库的情况下才会调用它,但是如果我关闭Android应用并重新启动,openDatabase()
内的代码根本就不会被调用..如果它被调用了db已经创建了吗?还有另一种检查数据库已经创建的方法吗?
基本上,我需要在检查有数据库后调用一个函数。
db = openDatabase("dbn", "", "manager", dbSize, function() {
console.log('is called'); // only shows when first creating db
// USER table create
db.transaction(function (tx) {
//tx.executeSql('DROP TABLE grips.db.user');
tx.executeSql('CREATE TABLE IF NOT EXISTS user (id integer primary key,active_user, firstname, lastname, email, age, gym_id integer, set_time integer, date_created integer )');
tx.executeSql('CREATE TABLE IF NOT EXISTS sets (id integer primary key,machine_name, device_id integer, weight_val integer, user integer,reps, exercise_id integer, workout_id, gym_id integer, calories,time_ago text, date_created integer)');
tx.executeSql('CREATE TABLE IF NOT EXISTS devices (id integer primary key,mac_id text, device_type,gym_id integer,machine_id integer,machine_name,date_created integer)');
tx.executeSql('CREATE TABLE IF NOT EXISTS workouts (id integer primary key,user integer,date_created integer)');
tx.executeSql('CREATE TABLE IF NOT EXISTS pt_workouts (id integer primary key, img_url, name, video_url, admin_user integer, gym_id integer, gif_url, search_img, instructions, trainer_name, user_img, date_created integer)');
}, function (error) {
}, function () {
});
}, function (error) {
console.log('open db second error');
},function () {
console.log('open db second');
});
答案 0 :(得分:1)
openDatabase将打开现有数据库或创建新数据库(如果它不存在)。
所以,如果你这样做:
Caused by: java.lang.UnsatisfiedLinkError: no jnind4j in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:727)
at org.bytedeco.javacpp.Loader.load(Loader.java:502)
at org.nd4j.nativeblas.NativeOps.<clinit>(NativeOps.java:37)
... 18 more
如果数据库不存在,它将创建数据库,或打开现有数据库。然后你可以像这样在事务中进行表交互:
var db = null;
db = window.sqlitePlugin.openDatabase({ name: "my.db", location: 'default'});
或者您可以使用db对象并检查您需要检查的其他内容。我还建议这一切都是在onDeviceReady()方法中完成的(你可能已经这样做了)