1

好的,我正在学习在 android 中使用数据库,并遵循了几个教会了我很多的教程,现在我知道如何在第一次安装和打开应用程序时包含预填充的数据库并将其复制到应用程序,在列表视图中显示其内容。我已经使用 SQLite 数据库浏览器创建了数据库,所以我的问题是如何不将这个预填充的数据库包含在我的应用程序资产文件夹中,而是将它上传到我的网站并从那里获取它,以便我可以在那里更新数据库而不是每次数据库中的项目更改时都必须更新应用程序?我可以继续使用 SQLite 数据库浏览器来创建我的数据库吗?非常感谢您的任何评论,如果您可以分享一个可以帮助我完成此任务的教程,也非常受欢迎。提前谢谢。

4

3 回答 3

1

我的解决方案来自 YouTube 和 mimirsoft 的一些教程。第一次我使用 mysql 向导创建了一个数据库,第二次在 phpadmin 中我创建了一个包含我在应用程序中需要的所有信息的表第三次创建了一个 php 文件,该文件从数据库中查询数据并创建一个我可以从我的应用程序调用的 json 字符串. 第 4 在我的应用程序中,我从 ky 网站创建了对 php 文件的调用,设置了一个适配器和持有者,以便在我的列表视图中显示信息。就是这样!如果想实现类似的要求,它可以工作,我可以提供一些代码。另外,您可以查看下一个链接,您可以在其中找到有关此主题的 mimirsoft 教程。第 1 部分http://m.youtube.com/watch?v=P3CwlckiLTU第 2 部分 http://m.youtube.com/watch?v=HTIYt07NDRo

于 2012-04-29T03:10:59.333 回答
0

生成一个 sqlite 转储文件并将其导入数据库,替换必要的表和数据。

这是我在 Web 应用程序中所做的,而不是本机应用程序,但它应该可以工作。

于 2012-04-16T21:07:46.563 回答
0

有几种方法可以做到这一点。

一种方法是让 SQLite 数据库位于您的 Web 服务器上。然后,您可以进行某种检查,看看它是否与您设备上已有的数据库不同。例如,也许您的服务器上也有一个文本文件,其中有一行,即数据库的版本。在您的数据库中,您可能有一个表,其中一行包含您当前的本地版本。然后,您可以在数据库中查询版本并将其与文本文件中的版本进行比较。如果本地数据库版本小于文本文件中列出的版本,则废弃本地版本并获取新版本。

您可以通过执行以下操作来读取远程文件:

URL myFileURL = null;
InputStream is = null;
String version = "";
try {
    myFileURL = new URL("http://www.mywebsite.com/dbversionfile.txt");
    is = myFileURL.openStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
    String line = "";
    while((line = br.readLine()) != null) {
        version = line;
    }
} catch (Exception e) { }

比这更好的解决方案是在应用程序中包含数据库的骨架版本。只是一个包含所有适当表的空数据库。然后,您可以与 Web 服务器上的 PHP/Java/etc 页面进行通信,并获取数据库中当前不存在的任何数据的 JSON 字符串。如果选择此方法,您可能希望在数据的每一行中包含时间戳。这样,您可以在设备本地数据库上查询具有最新时间戳的行。如果此时间戳小于从服务器上的数据库返回的 1,则返回大于 JSON 格式的所有行。

如果您想使用此方法,您可能需要研究 Android JSONObject 类。

我敢肯定还有其他方法。

于 2012-04-23T21:26:38.550 回答