gpt4 book ai didi

java - 在 phonegap 应用程序和 native java 应用程序之间共享 SQlite 数据库

转载 作者:行者123 更新时间:2023-11-30 02:10:28 24 4
gpt4 key购买 nike

我有两个 Android 应用程序(一个用 js(使用 phonegap)编写,另一个用 java 编写)。两者都需要访问一个 SQLite 数据库。 Yes it's possible.

在我的 js 文件中,我使用 Cordova-sqlite-storage创建数据并将数据插入数据库:

var db = window.sqlitePlugin.openDatabase({name: "CAC.db", location: 1});

db = sqlitePlugin.openDatabase({name: "CAC.db", location: 2, createFromLocation: 1});


db.transaction(function(tx) {
tx.executeSql('DROP TABLE IF EXISTS test_table');
tx.executeSql('CREATE TABLE IF NOT EXISTS test_table (id integer primary key, data text, data_num integer)');

// demonstrate PRAGMA:
db.executeSql("pragma table_info (test_table);", [], function(res) {
console.log("PRAGMA res: " + JSON.stringify(res));
});

tx.executeSql("INSERT INTO test_table (data, data_num) VALUES (?,?)", ["MY ID", 100], function(tx, res) {


db.transaction(function(tx) {
tx.executeSql("select data as dt from test_table;", [], function(tx, res) {
var id = res.rows.item(0).dt;
console.log("res.rows.item(0).cnt: " + id);

});
});

}, function(e) {
console.log("ERROR: " + e.message);
});
});

然后我使用 this answer尝试将 Java 应用程序连接到我先前存在的数据库:

 Context sharedContext = null;
try {
sharedContext = this.createPackageContext("com.my.app", Context.CONTEXT_INCLUDE_CODE);
if (sharedContext == null) {
return;
}
} catch (Exception e) {
String error = e.getMessage();
return;
}

DbAdapter sharedDBadapter = new PerformerDbAdapter(sharedContext);
sharedDBadapter.open();

但是我需要在我的 js 应用程序中使用此代码:

DBadapter hostDBAdapter = new DbAdapter(getApplicationContext());
performerDBadapter.open();

尝试获取其上下文。 (但显然我不能,因为这段代码^是java)。所以我尝试使用 this answer. 获取上下文(Context context=this.cordova.getActivity().getApplicationContext();) 但我不确定在哪里添加它,我什至不确定这段代码是否能正常工作。

我的问题是:

  1. 我在哪里添加 this code在我的申请中?
  2. 我走的路对吗?
  3. 将 js 应用程序和 Java 应用程序连接到 Android 上的同一个 SQLite 数据库的最佳方法是什么? (例子会很有帮助)

信息:

安卓 5.1, Cordova 5.0

更新:

我已经在这两个应用程序中安装了 android:sharedUserId="my.app"

最佳答案

1) 这取决于你的应用程序,请阅读一些关于 android 的书,并将能够将代码放在你需要的地方。您还可以使用 GreenDAO 来更简单地访问 sqlite

3) 你可以用相同的证书签署2个不同的应用程序,这样两个应用程序被识别为“相同的用户ID”并且可以共享私有(private)数据

2) 这是一种方法,但一个好方法(最好的方法)是在 android 上的两个应用程序之间公开数据是使用 content provider

希望对你有帮助

关于java - 在 phonegap 应用程序和 native java 应用程序之间共享 SQlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30177406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com