Javascript 使用Cordova sqlite存储插件
我使用Cordova sqlite插件来选择数据并将其插入安卓设备中的数据库。在本例中,我从本机代码创建数据库,然后尝试从JavaScript源读取一些数据。但是,我认为JavaScript并不像Android那样从同一个位置读取 这是我的JS文件:Javascript 使用Cordova sqlite存储插件,javascript,android,mysql,sqlite,cordova,Javascript,Android,Mysql,Sqlite,Cordova,我使用Cordova sqlite插件来选择数据并将其插入安卓设备中的数据库。在本例中,我从本机代码创建数据库,然后尝试从JavaScript源读取一些数据。但是,我认为JavaScript并不像Android那样从同一个位置读取 这是我的JS文件: var db = window.sqlitePlugin.openDatabase({name: 'db',iosDatabaseLocation: 'Library'}); var session = this._sessionInfo
var db = window.sqlitePlugin.openDatabase({name: 'db',iosDatabaseLocation: 'Library'});
var session = this._sessionInfoService.getSessionInfo();
db.transaction(function (tx)
{
var firstName = session.firstName;
var lastName = session.lastName;
var userId = session.id;
tx.executeSql("CREATE TABLE IF NOT EXISTS user (user_id INTEGER, firstname VARCHAR, lastname VARCHAR)");
tx.executeSql('SELECT * FROM user', [], function (tx, results) {
var len = results.rows.length, i;
console.log(len);
for (i = 0; i < len; i++){
var id =results.rows.item(i).user_id;
console.log(results.rows.item(i).user_id );
if(id!=userId){
var dialogTitle = "Another user is already registred for this device";
var dialogText = "Do you want to override it ";
WL.SimpleDialog.show(dialogTitle, dialogText, [ {
text : 'Override',
handler : function(){
db = window.sqlitePlugin.openDatabase({name: 'db',iosDatabaseLocation: 'Library'});
db.transaction(function (tx)
{
tx.executeSql("UPDATE user SET user_id =?, firstname=?, lastname=?", [userId,firstName,lastName]);
}
}
}, {
text : 'No',
handler : function(){
db = window.sqlitePlugin.openDatabase({name: 'db',iosDatabaseLocation: 'Library'});
db.transaction(function (tx)
{
tx.executeSql("INSERT INTO user (user_id,firstname, lastname) VALUES(?,?,?)", [userId,firstName,lastName]);
}
}
}
]);
}
else{
}
}
}, null);
}
});
}
当尝试从JavaScript创建我的数据库和用户表,然后从java文件中选择时,我面临一个异常:表用户未知,当我从JS中选择用户时,我总是得到一个空列表。这就是为什么我认为我的代码创建了两个同名但位于两个不同位置的数据库
@Override
public void onStart(Intent intent, int startId) {
final SQLiteDatabase db = openOrCreateDatabase("db",
Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS user (user_id INT, firstname VARCHAR, lastname VARCHAR);");
Log.i("e2", "yes");
db.execSQL("INSERT INTO user (user_id,firstname,lastname) VALUES(91,'ess','ess');");
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
String query = "SELECT * FROM user";
Cursor c = db.rawQuery(query, null);
if (c != null && c.moveToFirst()) {
int userId=c.getInt(1);
System.out.println("userId"+userId);
Log.i("userId",String.valueOf(userId));
}
}
catch(e){}
}
});
thread.start();
}