Android和相当大的SQLite数据文件

时间:2011-01-17 03:01:01

标签: android sqlite

我正在启动一个Android项目,这是我已完成的现有iPhone项目的端口。

我有一个相当大的只读SQLite数据库,大约100Mb。它被称为“mydata.sqlite”。我在哪里将它放在Eclipse工作区中?它对于“资产”来说太大了。

接下来,我如何最好地获取该文件?我会考虑尝试(稍后处理异常),例如:

SQLiteDatabase myDatabase = null;
myDatabase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

但是我需要路径字符串myPath,因为我不知道在哪里放置资源我不知道这需要什么。

我可以将“mydata.sqlite”放入“res / raw”(一旦我在Eclipse中创建“raw”),然后将其作为资源引用“R.raw.mydata”吗?

我非常感谢这里的一些直接帮助,而不是对教程的引用。我检查了很多这些,包括那些已经在stackoverflow上引用的那些。我还浏览了Android开发者文档中的“记事本”项目。然而,这些和文档通常只考虑并不总是持久的新的,空的或小的数据库。这应该是一件简单的事情,考虑到我已经花费的时间,它可能更容易提出。

请提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

我之前从未尝试在我的应用中包含这么大的数据库。

您的问题的一个解决方案可能是将您的mydata.sqlite重命名为mydata.jpg,以避免文件被aapt压缩,然后您可以将其放入资产文件夹并从那里访问它。

  

任何压缩资产文件   未压缩的大小超过1 MB   无法从APK中读取。   [source]

编辑:现在最好的选择似乎是在需要时从Web服务器中检索小块数据?找到this,查看mjc147的解决方案,Google的Romain Guy解释了1mb的限制。

答案 1 :(得分:1)

请注意,如果您在.apk中放置一个100MB的资产,那么您最终会得到一个太大而无法在Market上发布的应用。

答案 2 :(得分:0)

我使用35MB的SQLite数据库做过一次。我做了什么:

1。)我使用Windows工具(我认为是TotalCommander)将* .db文件拆分为1MB。

2.)我把它们放在资产文件夹中。

3。)在我的数据库帮助程序类中,我在首次启动时将这些部分移动到一起。

它工作得很完美,而且足够快。

你应该考虑什么:

1。)在内部存储启动期间,您有一个3 * 50MB,因此请考虑将SD卡用于您的数据库。

2.。)在您的应用更新期间,您的设备上有4 * 50MB ...

此致 HJW