- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个关于 android 中的 sqlite 数据库的新手问题:
我真的需要在每次操作数据时都检索一个可写数据库吗?
那么我可以这样写一个 DAO 吗:
class Dao {
private final SQLiteDatabase database;
public Dao(SQLiteOpenHelper databaseHelper){
database = databaseHelper.getWritableDatabase();
}
public void insert(...){
ContentValues cv = new ContentValues(4);
database.insertOrThrow(TABLE, null, cv);
...
}
public void update(...){
ContentValues cv = new ContentValues(4);
database.update(....);
}
}
还是我必须这样写我的道:
class Dao {
private final SQLiteOpenHelper databaseHelper;
public Dao(SQLiteOpenHelper databaseHelper){
this.databaseHelper = databaseHelper
}
public void insert(...){
SQLiteDatabase database = databaseHelper.getWritableDatabase();
ContentValues cv = new ContentValues(4);
database.insertOrThrow(TABLE, null, cv);
...
}
public void update(...){
SQLiteDatabase database = databaseHelper.getWritableDatabase();
ContentValues cv = new ContentValues(4);
database.update(....);
}
}
如果第二种方法是正确的:我是否还需要在每次操作后关闭数据库:
public void update(...){
SQLiteDatabase database = databaseHelper.getWritableDatabase();
ContentValues cv = new ContentValues(4);
database.update(....);
database.close();
}
我想 databaseHelper.getReadableDatabase()
也是一样吧?
最佳答案
您应该关闭您打开的每个游标。但数据库实例不需要在每次使用后关闭。
我通常在 onCreate()
中获取可写数据库,并将生成的 SQLiteDatabase
存储为每个 Activity 的成员变量,并且从不显式关闭该实例。 (但同样,我会在处理完它们的结果后立即关闭每个游标。)
参见 Managing SQLite Connections in Android有关该主题的更多讨论。
关于android - 我是否需要在每次操作数据时调用 getWritableDatabase(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595482/
我想在手机不在覆盖区域时存储一些数据。当服务恢复时,它将在服务器上上传数据。但数据没有插入。我在网上查了很多教程。但一直都一样。应用程序意外关闭。 LogCat 错误 10-12 12
我正在为 android 应用程序编写一个函数,它可以通过导入最新的 csv 文件来更新 sqlite 数据库。当用户单击该按钮时,程序应该删除旧表并根据最新数据创建另一个新表。第一次按下按钮时,应用
我正在创建一个名为 Mycontacts 的应用程序。这与 youtube 上的视频相同( https://www.youtube.com/watch?v=38DOncHIazs )。 但是这个get
据我所知,调用 SqliteOpendHelper.getWritableDatabase() 总是返回相同的 SQLiteDatabase 实例。那么与之关联的交易是否也不会受到影响? 假设一个单线
我在调用 getWritableDatabase() 时遇到问题。它返回 NullPointerException。最奇怪的是,这个错误是在我注释掉我的 android list 中的几行代码之后才开
我有一个具有以下代码的服务类 - public class ReminderService extends WakeReminderIntentService{ private st
我有一个关于 android 中的 sqlite 数据库的新手问题: 我真的需要在每次操作数据时都检索一个可写数据库吗? 那么我可以这样写一个 DAO 吗: class Dao { p
我正在尝试使用以下代码更新我的数据库表: public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
文档位于 http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#getWritabl
我正在开发一个使用存储特定信息的数据库的项目。数据库对部分程序有效,但对其他程序则无效。当用户第一次启动程序时,他们将看到从数据库中提取的信息,并且他们还可以选择添加新信息。数据库对于这两者都工作得很
好吧,所以我一直在搜索这个问题,我找到了几个我尝试过但没有成功的答案。我注意到,如果我注释掉 getWritableDatabase,应用程序不会崩溃,但它不会完成我想要的操作。 我还引用了这个vid
我正在开发我的第一个 SQLite 数据库应用程序,因为我被困了很长时间,所以我决定在线询问。 由于以下函数,我无法运行我编写的应用程序:Helper.getWritableDatabase(); 没
我正在尝试在我的应用程序中创建与 sqlite 的连接,但是如果我执行该应用程序,在 getWritableDatabase 行中,应用程序将强制关闭,我不明白发生了什么。 DBCore 类: pub
我已经让 Singelton 对象对 SQLiteOpenHelper 进行查询,我在其中保存了 getWriteableDatabase() 的实例。在整个应用程序生命周期中,对于所有 select
我在调用 getWritableDatabase() 时遇到问题。它返回 NullPointerException。最奇怪的是,这个错误是在我注释掉我的 android list 中的几行代码之后才开
此处为 Android 新手。我制作了一个新的 Fragments 应用程序,但无法从 Fragment 访问数据库。 这是类: public class ShopListActivity exten
我有这个代码: // 2. get reference to writable DB SQLiteDatabase db = this.getWritableDatabase(); Cursor cu
更新 当我尝试从 Activity 调用方法时出现错误: SQLiteDatabase db = null; List r = dbHelper.getAllAlbum(db); 在我的 dbHel
这是我尝试访问数据库的地方: UserDataAdapter dbHelper = new UserDataAdapter(this); dbHelper.open(); dbHelper.creat
我经常收到用户报告此错误。 无法获取可写数据库。 try { //dbOpenHelper is a standard SQLiteOpenHelper dbOpenH
我是一名优秀的程序员,十分优秀!