gpt4 book ai didi

android - 我是否需要在每次操作数据时调用 getWritableDatabase()

转载 作者:IT王子 更新时间:2023-10-29 06:23:48 24 4
gpt4 key购买 nike

我有一个关于 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com