如何在从cordova创建的本机代码中使用相同的android SQLite DB?

时间:2019-07-17 07:55:33

标签: java android sqlite cordova

我在我的cordova应用程序中设置了一个SQLite数据库。然后,我需要开发一个新的插件来读取该数据库。那么,如何从本机代码访问从cordova创建的数据库?

这是我创建数据库的方式:

var shortName = 'mydb1';
var version = '1.0';
var displayName = 'my database';
var mydb = openDatabase(shortName, version, displayName, 100000000);

我创建了一个名为“ student”的表并插入一些数据。一切似乎都正常。我什至可以查看插入的数据。

现在,我需要使用Java开发一个插件,并且该插件需要读取我刚刚创建的“学生”表。这是我的代码:

SQLiteDatabase mydatabase = openOrCreateDatabase("mydb1",MODE_PRIVATE,null);
Cursor resultSet = mydatabase.rawQuery("SELECT * FROM student", null);
resultSet.moveToFirst();

return resultSet.getString(0);

我上面的代码产生以下错误:

android.database.sqlite.SQLiteException: no such table: student (code 1): , while compiling: SELECT * FROM student
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such table: student (code 1): , while compiling: SELECT * FROM student)

请帮助

其他信息:

  • 我已经检查了我的Java代码上的软件包名称,我非常确定 即时通讯使用的是正确的
  • 这是使用Cordova 2.2.0的非常老的应用程序

1 个答案:

答案 0 :(得分:0)

使用数据库路径解决了它。似乎cordova使用的数据库路径是不同的。因此,我需要使用数据库的完整路径。这是我的解决方法

SQLiteDatabase mydatabase = openOrCreateDatabase("/data/data/com.my.packagename/app_webview/databases/file__0/1",MODE_PRIVATE,null);

我实际上必须扎根设备才能真正找到此确切路径。