熟悉android的人都知道,Android数据库存在很大的问题。
- Android的系统推荐数据库是Sqlite,下载地址,网上多的是。
- Android有自己默认数据库文件夹,是系统自动映射的,啥意思? 就是你在android代码中,自建数据库,Creat DB 就会自动在那个路径下生成。那个路径是 Sys/data/data/package_name/XX.db3,你可以通过File Explorer查看, File Explorer在Eclipse—Windows——Show View——Other View中找到。
- 作为开发者来说,通常来说都有已经建立好的数据库,然后再导入到项目中增删改查,如果你在项目中新建的数据库,那么你现在可以return了.下面所说的对你没有任何价值。如果不是,那么,我们先来研究研究如何导入数据库。
2.1 程序是给顾客使用的,所以数据库必然打包在.apk中,数据库放在那里?个人推荐 放在res/raw中,这样比较好,如果你放在assets文件下,也行。(据传说,前者比 后者对于读取容量大,前者1.5mb,后者1.2mb,当然,这只是个传说)。 **问题1: 数据库放在/res/raw下,读不出,老被拒绝访问。 **
解决方法1:恩,把数据库复制到另外的目录下,或者data/data/package_name/db 或者sd card/myProject/ 强烈推荐后者,为啥?因为手机内存本来就不够,一直不够,你还往哪里面复制,找死呀。这还不是问题,问题是它不让你复制到系统文件下,说你没有root权 限,你还得去刷机,本人刷了一下,2个小时过去了。
**问题2:SD Card 如何访问。 **
解决方法2:老实说,这篇文章给我了不大不小的启发,http://www.ophonesdn.com /article/show/111,感谢李宁。你可以去看看他的代码,很简单易懂,本人亲测,运行成功。至于他里面 AutoCompleteTextView控件的部分,是我自己加工修改的。
**问题3:关于李宁老师工程的疑问,也就是大数据的问题。 **
解决方法3:看了他的代码,亲测成功,很欣喜,但是,如果换成大数据库就悲剧了。 首先,你要知道个概念,Java没有复制API,所以我们只能先读取文件,在写入到sd card上。 其次, 就是Android对于读取资源文件有大大的限制,资源文件不允许超过1.5MB,指定类型除外。 大数据库呀,你让我情何以堪。 等等,不是,还有别的解决方法。
- 把较大数据库切割,这个本人没有亲测,但是知道肯定能成功。对于较大的数据库,你可以切割成几个较小的数据库,然后复制到 sd card ,然后整合。 关于这个,我给个网址吧,你自己去看,讲的很详细,不过得翻墙。
http://androidblogger.blogspot.com/2009/05/how-to-ship-application-with-pre-baked.html - 欺骗Android系统。 你可以把mydatabase.db3的后缀名改成.mp3和.zip,然后你在copy,Android就不会对你限制,你爱读多大,你就读多大,只要 机器不挂,就ok。 我靠,这简直是天方夜谭!缘由我简单说说吧,因为说多了说错的也多了,嘿嘿。因为Android系统默认会对除指定类型外的文件进行压缩,然后用到的时候 在读。但是,如果你改成.mp3和.zip,那么,他就不会压缩,所以,就直接跳过1.5Mb的限制,就可以读了。 本人亲测40MB的,复制成功。 不过,本人推荐使用zip,为啥? 他会让你的.apk变小1倍。 java 提供了相关API。
- Android 2.2 貌似可以直接解决,所以说,科技以人为本.