当前位置:首页 » 安卓系统 » 安卓中数据库关闭在哪个周期关闭

安卓中数据库关闭在哪个周期关闭

发布时间: 2022-07-01 19:18:06

‘壹’ android如何避免频繁的打开和关闭数据库操作

但是不关闭程序会报错,虽然不影响运行,但总是不好的,而且我不确定会不会出现什么不可预料的情况

‘贰’ Android 安卓数据库操作和通知

public class DBHelper extends SQLiteOpenHelper { public static final String TB_NAME = "mydemo_user"; public static final String ID = "_id"; public static final String NAME = "username"; public static final String PASSWORD = "passname"; public static final String ISCHECK = "ischecked"; //当前版本 public static int version = 1; /** * 构造函数 * @param context Context类型,上下文对象。 * @param name String类型,数据库的名称 * @param factory CursorFactory类型 * @param version int类型,数据库版本 */ public DBHelper(Context context, String name, CursorFactory factory,int version) { super(context, name, factory, version); this.getWritableDatabase(); } public void Close() { this.getWritableDatabase().close(); } /** * 创建数据库 */ public void onCreate(SQLiteDatabase db) { db.beginTransaction(); try{ db.execSQL("CREATE TABLE IF NOT EXISTS " + TB_NAME + " (" + ID + " INTEGER PRIMARY KEY," + NAME + " VARCHAR," + PASSWORD + " VARCHAR," + ISCHECK + " VARCHAR)"); db.setTransactionSuccessful(); }catch (Exception e) { } finally { db.endTransaction();//此时不能关闭数据库,不然创建数据库完成后,数据库不能使用 } } /** * 删除数据库 */ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TB_NAME); onCreate(db); } /** * 添加新用户 * @param name * @param number */ public void addUser(String username, String password,String isChecked) { ContentValues values = new ContentValues(); values.put(DBHelper.NAME, username); values.put(DBHelper.PASSWORD, password); values.put(DBHelper.ISCHECK, isChecked); this.getWritableDatabase().insert(DBHelper.TB_NAME, DBHelper.ID, values); } /** * 删除单个用户 * @param id */ public void delUser(int id) { this.getWritableDatabase().delete(DBHelper.TB_NAME, DBHelper.ID + " = " + id, null); } /** * 修改单个用户 * @param id */ public void updateUser(int id,String username, String password,String isChecked) { ContentValues values = new ContentValues(); values.put(DBHelper.NAME, username); values.put(DBHelper.PASSWORD, password); values.put(DBHelper.ISCHECK, isChecked); String where = DBHelper.ID+"=?";//设置条件 String[] whereValue = {Integer.toString(id)};//设置条件中的参数 this.getWritableDatabase().update(DBHelper.TB_NAME, values, where, whereValue); } /** * 删除多个用户 */ public void delAllUser() { this.getWritableDatabase().delete(DBHelper.TB_NAME, null, null); } /** * 查询 * @param username * @return */ public List<Users> queryUser(String username){ List<Users> data = new ArrayList<Users>(); String[] columns = { DBHelper.ID, DBHelper.NAME, DBHelper.PASSWORD,DBHelper.ISCHECK }; String[] parms = { username }; String where = DBHelper.NAME + "=?";// 设置条件 Cursor result=null; if(username!=null){ result = this.getWritableDatabase().query(DBHelper.TB_NAME,columns, where, parms, null, null, null); }else{ result = this.getWritableDatabase().query(DBHelper.TB_NAME,columns, null, null, null, null, null); } result.moveToFirst();//移动到第一行 while (!result.isAfterLast()) {//遍历数据 Users user = new Users(result.getInt(0), result.getString(1),result.getString(2), result.getString(3)); data.add(user); result.moveToNext(); } result.close(); return data; } }

‘叁’ SQLite数据库何时关闭

你执行的时候,会有个cursor,建议你写try{}catch{},在finally{}里关闭你的cursor。这样不管你操作数据库是否成功,你的cursor都会关闭。

‘肆’ android 数据库怎么关闭。

db.close()就是关闭查询出这个Cursor的db

‘伍’ 一般在什么时候关闭数据连接和数据集

一类是After系列,列表如下:
.BeforeOpen,AfterOpen发生在数据集打开前后;
.BeforeClose,AfterClose发生在数据集关闭前后;
.BeforeInsert,AfterInsert发生在插入了一条新的记录前后;
.BeforeEdit,AfterEdit 发生在进入dsEdit状态前后;
.BeforePost,AfterPost 发生在写数据集的前后;
.BeforeCancel,AfterCancel发生在取消修改的前后;
.BeforeDelete,AfterDelete发生在删除记录的前后。
此外,当数据集中增加了一条新的记录时就会触发OnNewRecord事件,当“计算字段”的值需要重算时将触发OnCalcFields事件。
Before系列的事件常常用来中止操作。例如,当调用Delete函数试图删除当前记录时,在当前记录将要删除前会触发BeforeDelete事件,可以在处理BeforeDelete事件的句柄中调用Abort或触发一个异常放弃删除当前记录,程序示例如下:
Pocere TForm1.TableBeforeDelete (Dataset: TDataset)
Begin
If MessageDlg('Delete This Record?', mtConfirmation, mbYesNoCancel, 0) <> mrYes Then Abort;
End;
After系列的事件往往用来在状态栏上通知用户,程序示例如下:
Procere TForm1.Table1AfterDelete(DataSet: TDataSet);
Begin
StatusBar1.SimpleText := Format('有%d 条记录',[DataSet.RecordCount]);
End;
OnCalcFields事件主要用于给出“计算字段”的值。AutoCalcFields属性的值决定了什么时候会发生OnCalcFields事件。
如果AutoCalcFields属性设为True,下列情况下会发生OnCalcFields事件:
.数据集被打开时;
.在数据控件中,输入焦点从一条记录移到另一条记录;
.在数据控件中,输入焦点从一个字段移到另一个字段;
.当前记录被修改或从数据库中检索了一条记录。
不过,即使AutoCalcFields属性设为False,当数据集中的任意一个非计算字段的值发生变化时都会触发OnCalcFields事件。
由于OnCalcFields事件有可能是频繁发生的,因此,处理OnCalcFields 事件的代码要尽可能地简短。在AutoCalcFields属性设为True的情况下,在处理OnCalcFields事件的句柄中不能修改数据集的数据,因为一旦当前记录被修改,又要触发OnCalcFields事件,从而导致无限循环。例如,假设您在处理OnCalcFields事件的句柄中调用了Post,就会触发OnCalcFields事件,导致再次调用Post,再次触发OnCalcFields事件……
6.9 TBDEDataSet
TBDEDataSet是从TDataSet继承下来的,它提供了通过BDE(BorlandDatabase Engine)访问数据的能力。这一节主要介绍TBDEDataSet,读者应当对前面介绍的TDataSet已经有了比较深刻的认识。
与TDataSet一样,TBDEDataSet也是虚拟的和抽象的,除非您想建立自定义的数据集,否则,一般不需要直接用到TBDEDataSet。
TBDEDataSet重载了TDataSet中涉及记录导航、索引和书签的方法,增加了一些处理BLOB字段、缓存更新的属性、方法和事件。

‘陆’ android中,Sqlite连接在什么时候关闭比较好

数据库打开和关闭连接 要耗时间 ,所以 如果频繁访问 ,就开着重用。
但是数据库连接 又耗内存,所以 如果估计不用了,就把他关闭 ,免得耗内存。
这个度,还是需要你自己 把握。

‘柒’ 我的程序中每个activity都打开了数据库,什么时候关,怎么关 [

建议你把cursor.close()和db.close()和打开数据库都封装在方法增删改查的方法里,使用完就关闭这样对数据的操作也更安全。

‘捌’ android数据库每次查询完都要关闭吗

关于数据库句柄,每次用完是必须手动调用close()方法关掉的;关于cursor一般情况也是要求关掉的,如果只获取了一次结果集,不关掉cursor对程序的逻辑没有影响,只是会抛一个非必要性异常,但是如果多次获取结果集,就必须先关掉cursor,再重新获取结果集,否则cursor没释放,之后的结果集是获取不到的,且会报错。所以,总的来说,都要关掉。

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:640
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:368
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:85
php微信接口教程 发布:2025-04-16 17:07:30 浏览:310
android实现阴影 发布:2025-04-16 16:50:08 浏览:793
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:345
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:213
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:813
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:366
土压缩的本质 发布:2025-04-16 16:13:21 浏览:593