问题标签 [sqliteopenhelper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
111 浏览

android - 如何阻止我的数据库重新插入已经手动插入的项目?

我有一个数据库助手和一个带有下面给出的代码的活动。我遇到的问题是,每次我运行应用程序时,它都会重新插入已经插入的值。我不希望这种情况发生。我很想得到帮助。

DBhelper 类被裁剪为 inserttitle 方法

0 投票
1 回答
325 浏览

android - 开始在 Android 中使用 SQLiteOpenHelper 创建数据库

我应该在使用 SQliteOpenHelper 创建数据库表时提前准备一个空数据库吗?从文档。SQLiteOpenHelper 的,它指出:

这让我很困惑: 1. 何时创建数据库并触发 onCreate() 方法?2. 数据库不存在时会自动创建吗?

感谢您查看问题并帮助回复!

0 投票
2 回答
2284 浏览

android - 我必须怎么做才能实现 SQLite 的 rawQuery() 方法?

我正在尝试使用 SQLite rawQuery 方法,基于此处的代码:

数据库中的Android记录存在()?

...但我得到“未定义 OdaaDBOpenHelper Authorize_Activity_DynamicControls.java 类型的方法 rawQuery(String, String[]) ”,代码如下:

我尝试使用我的 SQLiteOpenHelper 派生类的实例名称和使用类名本身(在上面的代码中注释掉)。

我必须做些什么来实现 rawQuery() 或使其被识别/确认?

0 投票
3 回答
3703 浏览

android - 每次应用程序启动时是否真的需要创建 SQLite 表?

我在不止一个 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 文件复制到正确的位置并没有改变任何事情。如果这是导致问题的原因,因为我的应用程序正在寻找一个 AWOL 数据库,那么简单地复制和粘贴文件是否还不够?我必须做些什么来正式 将数据库引入system/Android/Eclipse目录吗?有什么建议么?

0 投票
2 回答
1228 浏览

android - 在哪里/如何在 TabActivity 中实现 SQLiteDatabase 和 AsyncTask

我基本上完成了我正在开发的应用程序(我的第一个!),除了实现任何数据保存机制。不久前我研究了这些选项,并认为 SQLiteDatabase 是最好的选择,但是我很难弄清楚如何准确地实现它,所以我把它留到了完成程序的其余部分。从那以后,我每次在我的设备上运行它时都重新输入所有值来测试它。

该应用程序从屏幕上基本上没有任何内容开始。用户添加玩家(通过菜单和对话框)。一旦玩家列表最终确定,用户点击对话框中的“保存”。然后每个玩家的 Table Row 动态膨胀并包含一个 Button、几个 ImageView 和一个 TextView,所有这些都显示每个 Player 的各种属性。这对我的问题并不重要。

所以,我的应用程序基本上只会跟踪 Player 对象。我的数据库对象都是以此为指导构建的:http : //www.androidhive.info/2011/11/android-sqlite-database-tutorial/,大部分情况下将“联系人”替换为“玩家”。

我难以理解的是在哪里实现每个玩家对象的“保存”和“加载”,以及在主 Activity 的 onCreate、onResume 和 onStop 方法中做什么。我已经研究了好几个小时了,我了解到我还应该实现一个 AsyncTask,但这更加复杂,我什至无法将基本数据加载到我的大脑中,更不用说异步执行了.

在我正在阅读的 Deitel 开发人员系列中名为“Android for Programmers: An App-Driven Approach”的书中,有一个关于如何实现 AsyncTask 和 SQLiteDatabase 的很好示例,但在他们的示例中,他们在 ListActivity 中使用了 CursorAdapter,所以我不知道如何使它适用于我的情况。(我的是一个 TabActivity,我上面解释的只是一个“查看玩家”选项卡。)

当用户在“添加玩家对话框”中单击“保存”时,将玩家添加到数据库中对我来说是有意义的,但我不明白在哪里重新加载玩家对象以及在哪里重新填充每个玩家的表格行。

很抱歉,我没有发布更精确的代码,但这更像是一个普遍的问题,我宁愿不发布我的整个应用程序,因为它大约有一千行长。任何帮助将不胜感激,我尽量不要在这里发布每件小事,但这些东西让我很沮丧!

0 投票
3 回答
2279 浏览

android - 为什么Android记事本教程中没有关闭DBHelper?

我目前正在编写我的第一个 Android 应用程序,并且我的大部分知识都基于 Android 记事本教程:

http://developer.android.com/resources/tutorials/notepad/notepad-ex3.html

在我的应用程序中,我在一个 Activity 中使用了多个 DBHelper,并不是每个 Cursor 都由带有 startManagingCursor() 的 Activity 管理。

我了解到每个数据库连接都必须正确打开和关闭:

据我所知 startManagingCursor() 为您工作。但是 startManagingCursor() 是否也打开和关闭 SQLiteOpenHelper?

Android Notepad 教程使用 startManagingCursor() 但 DBHelper 从未关闭。为什么 SQLiteOpenHelper 永远不会关闭?

编辑:

这是我当前的代码。它使用一个名为 mDriverDbHelper 的 SQLiteOpenHelper。此代码是从教程中采用的:

私有 DriverDbAdapter mDriverDbHelper;

此代码示例确实有效,但我不明白为什么。我在 onCreate 和 onStart 中两次调用 mDriverDBHelper.open()。

我试图将 open() 和 close() 调用放在 onPause 和 onResume 中,但这会导致错误:

有谁知道为什么它必须是 onStart 和 onStop 而不是 onPause 和 onResume?

最终答案

本教程缺少 close() 方法调用。结合活动生命周期使用 open 和 close 的一般规则是:

在活动生命周期方法中打开 SQLiteOpenHelper 后,您应该在相应的对应生命周期方法中关闭它。

在 Android NotePad 教程中,缺少 onDestroy() 方法,应该关闭 mDbHelper。

0 投票
3 回答
1438 浏览

android - Android + sqlite 插入速度提升?

我最近继承了一个项目,其中一个 sqlite db 存储在用户 sdcard 上(只有表和列,没有内容)。对于初始安装(和后续数据更新),通过 saxParser 解析 XML 文件,将其内容存储到 db 列,如下所示:

萨克斯解析器:

数据库助手:

加载的 xml 文档有 6000 多行。在设备上进行测试时,它会在大约中途(无错误)后停止插入,大约需要 4-5 分钟。然而,在模拟器上,它运行得相当快,在大约 20 秒内将所有行写入数据库。我有在打开数据库、添加数据然后关闭时运行的日志语句。在设备上运行时,LogCat 输出明显变慢。我在这里缺少什么吗?为什么我的数据需要这么长时间才能写入?我认为改进的 InsertHelper 会有所帮助,但不幸的是甚至没有更快。有人可以在这里指出我的缺陷吗?

0 投票
0 回答
221 浏览

android - ContentProvider.getWriteableDatabase 抛出 NullPointerException

所以基本上,我正在尝试编写一个封装 SQLite 数据库的 ContentProvider。我在网上到处查看,遵循了几个不同的教程,并不断遇到同样的问题。我注意到很多人问同样的问题,但那里的建议都没有帮助我。

基本上,每当我在我的 SQLiteOpenHelper 上调用“getWriteableDatabase”时,它都会抛出一个空指针异常并且什么都没有创建。这是我的代码:

我从我的主要活动中创建了这个对象,一切正常,直到我调用“插入”,也就是它崩溃的时候。

编辑:这是堆栈跟踪

0 投票
5 回答
7345 浏览

android - SQLiteOpenHelper“onCreate”没有被调用?(数据库不存在)

从我以这种方式实例化的片段

下面的课。我不明白为什么没有调用 onCreate() 并且没有创建我的数据库。

编辑:诀窍是必须使用数据库(读取或写入)所以 onCreate() 被调用。

0 投票
2 回答
3229 浏览

android - 如何从联系人数据库中读取所有联系人并将其存储到列表中?

我正在尝试从联系人表中读取联系人并将它们全部存储到列表变量中..但无法弄清楚为什么它似乎不起作用..在执行时强制关闭。需要发送联系人通过 json 对象发送到 Web 服务器。

清单文件有2个权限

和 DBHelper 类,用于将 sqlitopenhelper 扩展为 getWritableDatabase..

}