我在不止一个 SQLite 教程中注意到该表是在onCreate()
扩展类的事件SQLiteOpenHelper
。我已经在 Firefox 插件的帮助下在 Android 环境 (Eclipse IDE) 之外创建了 SQLite 数据库和表。数据库表位于预期位置:
C:\aXX3&Space\Android\workspace\OnDemandAndAutomatic_Project\assets
对我来说,我每次都必须以编程方式重新创建它们,这似乎很奇怪(显然,它们继续存在并保留数据,否则有什么意义)?但是,我现在对该应用程序遇到了一个严重的问题,这让我想到了我的问题:
- 真的有必要每次都提醒Android有关数据库的事情吗?
令我懊恼的是,我刚刚意识到,与其在中创建数据库表,不如C:\aXX3&Space\Android\workspace\OnDemandAndAutomatic_Project\assets
,我把它们放进去了C:\aXX3&Space\Android\workspace\OnDemandAndAutomatic\assets
,这是应用程序的早期版本,但将 SQLite 文件复制到正确的位置并没有改变任何一点。如果这就是导致问题的原因,即我的应用程序正在寻找擅离职守数据库,那么仅仅复制并粘贴文件还不够吗?我必须做点什么吗正式将数据库引入system/Android/Eclipse
目录?有什么建议么?
我认为你在这里误解了。当构造一个SQLiteOpenHelper对象时,它会检查SQLite数据库是否存在,如果不存在,它会调用它的onCreate()方法(通常开发人员实现创建数据库 SQL)
Update:
@Clay Shannon:我将解释 Eclipse 和 Android 项目的工作机制。假设您使用 Eclipse 来编写 Android 项目。新项目将在工作区中创建一个项目文件夹(在您的情况下是C:\aXX3&Space\Android\workspace项目文件夹是OnDemandAndAutomatic_项目)。这个文件夹会包含几个子文件夹如:src、bin、assets、res、...每个文件夹都有自己的作用,你对assets文件夹感兴趣吧? Assets 文件夹用于包含参考文件(不能或您不想放入 res 文件夹中),例如:html 文件、声音文件、图像文件、文本文件...当 Eclipse 从项目构建 apk 时,这些文件也包含在 apk 中。当您在 Android 设备上安装 apk 时,该 apk 会被复制到 Android 系统文件夹中,同时还会创建一个包含应用程序数据的文件夹,如 Dharmendra 提到的:/数据/数据/{包名}/(包名称,例如 com.google.app 等,此路径适用于您设备的 Android 操作系统,不适用于 Windows)。
Your case here is you want to use your already-exists database, so you need to implement a function which check if your database exists or not, if not copy your db into the database path
/data/data/{packagename}/databases/, and call that function when your app start. And how to do it is already answered here
How to copy existing database from one app to another https://stackoverflow.com/questions/5662181/how-to-copy-existing-database-from-one-app-to-another. Also here is reference to access asset files, in case you don't know
http://www.wiseandroid.com/post/2010/06/14/Android-Beginners-Intro-to-Resources-and-Assets.aspx http://www.wiseandroid.com/post/2010/06/14/Android-Beginners-Intro-to-Resources-and-Assets.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)