我正在开发和android应用程序,我经常使用它访问本地数据库。这个数据库可以从不同的therads访问,所以我对数据库有一个协调问题。我使用以下open()和close()方法。Android:打开和关闭SQLite数据库

public void open(){

mDb=mDbHelper.getWritableDatabase();

}

public void close(){

mDb.close();

}

所以,通常情况下,当我需要访问数据库的某些操作我打开数据库,然后我执行一些操作,最后我关闭数据库。我通常使用用于此目的的代码如下:

try {

dbManager.open();

// database operation

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

dbManager.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

但是,如果此片的代码是从differnts线程使用(假设线程A和线程B)下面可能情况发生:

A thread: performs open()

B thread: perfroms open()

A thread: perfroms some operation

A thread: performs close()

B thread: try to perform some operation but it fails!

因此,当我的应用程序启动时,我猜想我可以执行的唯一解决方案是open(),而当我的应用程序停止时,我可以执行close()。我不确定这是否是一个好的解决方案?

实际上,getWritableDatabase()方法的文档(从我open()称呼)说:

Make sure to call close() when you no longer need the database

所以,任何人都可以提出我的替代解决方案?

+1

不关闭数据库,仅仅只是接近光标到数据 –

2013-04-23 14:10:14

+0

同步访问或在一个线程中只有 –

2013-04-23 14:15:36

+0

做分贝OPS ...或建立的ContentProvider ... –

2013-04-23 14:16:31

android打开sqlite数据库,Android:打开和关闭SQLite数据库相关推荐

  1. android增删功能代码,Android Studio开发实战 之 增删改查

    增删改查是一个应用最基础的操作,增删改查的流程走通了,下面的路程也就顺利多了.现在使用Android Studio开发一个简单的应用,该应用就实现了增删改查的操作,看似简单,到底简不简单呢,下面开始操 ...

  2. oracle关闭数据库容器,Oracle12cr1新特性之容器数据库(CDB)和可插拔数据库(PDB) 的启动和关闭...

    Oracle12c中引入的多宿主选项(multitenant option)允许一个容器数据库容纳多个独立的可插拔数据库(PDB).本文将说明如何启动和关闭容器数据库(CDB)和可插拔数据库(PDB) ...

  3. android代码打开数据库,Android打开和关闭数据库

    与计算机编程中的许多事情一样,关闭SQLite数据库的时间没有单一的"正确进行"(如果您正在使用它,则通过SQLiteOpenHelper上的close(),否则对SQLiteDa ...

  4. android代码打开数据库,android – 如何正确关闭并重新打开Room数据库

    您好我有2个应用程序依赖于制作和恢复应用程序数据库的备份,只需将数据库文件复制到SD卡中,然后很难确定如何在关闭它之后重新打开Room Database单例以创建数据库'副本. 构建数据库: @Dat ...

  5. android代码关闭数据库,android – 我应该如何正确打开和关闭我的数据库

    我有一个应用程序,它将一些数据存储在SQLite数据库中.此外,我在我的应用程序中进行了大量查询和重新查询.我在其中有大约15个活动.并且所有人都使用数据库来查询数据. 但我正在做的是在每个活动中打开 ...

  6. 【转】Android 设置Wifi热点、打开与关闭的监听

    原文地址:http://blog.csdn.net/u011520181/article/details/46496377 用过360的面对面快传,快牙的朋友应该都知道,它们在两台设备间实现文件传输都 ...

  7. Android 设置Wifi热点、打开与关闭的监听

    用过360的面对面快传,快牙的朋友应该都知道,它们在两台设备间实现文件传输都是通过WiFi热点实现的,下面我们就来探讨一下如何设置热点名和密码,并自动创建一个wifi热点吧,以及如何监听热点的打开与关 ...

  8. android 页面退出动画,android Activity打开和关闭动画

    activity 之间的动画跳转,或者是关闭的的时候的动画关闭. public class SActivity extends AppCompatActivity { @Override protec ...

  9. Android控制闪光灯的方法(打开与关闭)

    Android移动端操作系统 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名称, ...

最新文章

  1. [ZJOI2018]历史
  2. 性能领先,即训即用,快速部署,飞桨首次揭秘服务器端推理库
  3. vimrc 配置 史上最牛
  4. tableau必知必会之仪表板的最佳实践
  5. 常见网络游戏同步方式
  6. 【机器视觉】 Halcon批量加载图像
  7. c语言多维数组基础知识,C语言基础第7章多维数组.ppt
  8. maven使用testng_使用Maven Failsafe和TestNG分别运行单元测试和集成测试
  9. 清华大学《操作系统》(七):虚拟存储、覆盖、交换
  10. 将 nginx 安装成 windows 的方法
  11. mybatis sql linux,通用mapper生成sql及mybatis使用过程
  12. 95-080-046-源码-启动-flink-daemon.sh
  13. 拜托,面试别再问我TopK了!!!
  14. Unity独立游戏大集合
  15. BootStrap4内容系列之文字排版
  16. 1.Attach(E-UTRAN Initial)
  17. 计算机网上培训6,wordexcel计算机基础培训6.pptx
  18. 视频封面如何消重 修改视频md5 百度网盘
  19. 程序的优化 文字的减法
  20. 基于ARM9多串口工控主板的嵌入式开发方案

热门文章

  1. linux内核分析第五次实验
  2. http://blog.sina.com.cn/s/blog_4aae007d0100inxi.html
  3. careercup-递归和动态规划 9.2
  4. jvm lock低性能分析
  5. Java基础知识之变量与常量、数据类型、类型转换
  6. Java算法之只出现一次的数字
  7. erwin怎么设置编码_Word页码的设置方式
  8. python没有错误但是不显示结果_解决Pycharm无法显示matplotlib绘图问题
  9. typeof---JavaScript
  10. Node.js下载安装及各种npm、nvm、nrm配置(保姆式教程---提供全套安装包)---node.js的安装与配置(1)