真的有必要在每次应用程序启动时创建 SQLite 表吗?

2024-03-17

我在不止一个 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(使用前将#替换为@)

真的有必要在每次应用程序启动时创建 SQLite 表吗? 的相关文章

随机推荐

  • 轻量级的 Scala fork join 语法

    尽管即将推出 java 7 标准 fork join 框架 但我正在构建一些语法轻量级的辅助方法 以便客户端并行运行代码 这是一个可运行的 main 方法来说明这个想法 import actors Futures object ForkTe
  • 如何将值从一种形式传递到另一种形式?

    考虑一下我有两个窗口窗体的情况 比如说F1 and F2 使用后F1 我现在已经打电话了F2 ShowDialog 这使得F2也在屏幕上 现在两种形式都可见 我如何从F1 to F2 另外 有一次F2 模态对话框 结束 如何返回数据F1 有
  • Android canvas drawText 文本的 y 位置

    我正在使用 Canvas 创建一个带有一些背景和一些文本的 Drawable 该可绘制对象用作 EditText 内的复合可绘制对象 文本是通过在画布上的 drawText 绘制的 但在某些情况下 我确实对绘制文本的 y 位置存在问题 在这
  • 我从哪里开始组装?

    嘿 我会用 C 语言编程 会一点 Python 和 Pascal 我真的很想学习汇编 我今年 18 岁 高中毕业 编程是 我的爱好 因为学业确实不是什么挑战 我下载了几本关于汇编的书籍 它们是 汇编的艺术 初学者的汇编 完全初学者的汇编和
  • Android 媒体记录器停止异常

    我正在从 Android 媒体录音机录制视频和音频 我正在检查剪辑长度 如果少于 2 秒 请删除它 但问题是 如果我从文件路径检查文件的持续时间 MediaRecorder 每次抛出异常后都会抛出异常 即使我录制 10 秒的音频 但是当我评
  • 为什么空基类优化 (EBO) 在 MSVC 中不起作用?

    为什么空基类优化 EBO 在Visual C 中没有得到充分应用 如果我有很多基类 我有什么办法可以帮助编译器进行这种优化吗 include
  • iOS UITesting 如何关闭 Popover(iPad Popover 不是警报样式)

    我有一个非常复杂的应用程序 有很多视图和弹出窗口 用于快速选择条目 我无法关闭弹出窗口 我尝试了很多类似的 点击窗口中的坐标 app otherElements PopoverDismissRegion 击中后面的元素 弹出窗口 根本不可点
  • Python KafkaConsumer 从某个时间戳开始消费消息

    我计划跳过主题的开头 只读取从某个时间戳到结束的消息 关于如何实现这一目标有任何提示吗 我猜你正在使用kafka python https github com dpkp kafka python https github com dpkp
  • 如何将列表视图放置在 SingleChildScrollView 中但防止它们单独滚动?

    我有一个像这样的小部件树 SingleChildScrollView Column Container ListView or GridView 问题是 当我的小部件树如上所示时 它会给我错误 需要油漆 所以我像这样改变我的小部件树 Col
  • C# 十六进制转ascii

    我正在尝试使用以下命令将十六进制字符串转换为 ASCII public void ConvertHex String hexString StringBuilder sb new StringBuilder for int i 0 i lt
  • 如何从 Android 上的 sqlite 数据库中删除旧行?

    我有一个参数 用户可以在其中选择应存储数据的时间段 我读到了days多变的 记录添加到数据库时的日期和时间存储在KEY DATE ADDED 它的创建方式如下 SimpleDateFormat dateFormat new SimpleDa
  • git-ftp 在 repo 根目录中的文件夹和文件名中添加尖号 (#)

    I use Git ftp https github com git ftp git ftp scripts to uploading of my project via FTP on shared hosting But there is
  • 在 Golang 中导入模块时如何捕获错误?

    在golang中 当我导入一个模块时 它的init 被执行 我假设在main 之前 这个函数中可能会产生一些错误 我如何捕获这些错误并在我自己的代码中处理它们 正如你所知 Go 中的错误是返回值 由于 init 不返回任何内容 因此如果出现
  • 在android中,当应用程序因滑动而被杀死时,如何执行代码?

    所以基本上我在 xamarin 上使用 C 创建了一个应用程序 一切都运行完美 我调用了一个事件处理程序 当我按下 Android 上的后退按钮时 它不会退出应用程序 只是将其移动到后台 为此 我使用了 public override vo
  • Android 获取 Google Play 商店应用程序版本

    我正在使用此代码来获取 Google Play 商店应用程序版本 但这导致我的应用程序挂起 请指定获取应用程序版本的另一种方法 或者我如何使用此代码使应用程序不会挂起并成功运行 public class VersionChecker ext
  • 在 jQuery Mobile 的弹出窗口中打开外部页面

    我正在使用 jQuery Mobile 实际上我想在弹出窗口中打开外部链接 我试过这个 a href Open Dialog a
  • 在 Python 中合并数据帧时出现重复行

    我目前正在使用内部联接合并两个数据帧 但是 合并后 即使我合并的列包含相同的值 我也会看到所有行都是重复的 具体来说 我有以下代码 merged df pd merge df1 df2 on email address how inner
  • 如何在 django 中将图像添加到帖子中

    我正在构建一个博客系统 它允许用户将图像添加到他们的博客中 当用户添加图像时 图像会自动上传 这是在博客发布之前发生的 所以我应该如何处理上传的图像 这些图像有点像临时图像 因为如果用户发布博客 这些图像将会有该博客的外键 并保存到某个文件
  • AWS Lambda 函数无法调用同一 VPC 中的另一个 Lambda 函数

    我创建了一个VPC10 5 0 0 16有 2 个子网 10 5 1 0 24 10 5 4 0 24 我创建了一个安全组 入境规则 Type Protocol Port range Source Description optional
  • 真的有必要在每次应用程序启动时创建 SQLite 表吗?

    我在不止一个 SQLite 教程中注意到该表是在onCreate 扩展类的事件SQLiteOpenHelper 我已经在 Firefox 插件的帮助下在 Android 环境 Eclipse IDE 之外创建了 SQLite 数据库和表 数