Sqlite操作数据库释放资源后,文件依然处于占用状态

如题,我在用sqlite操作数据库的时候明显有了
if (sqliteHelper != null)
{
sqliteHelper.Dispose();
sqliteHelper = null;
}
释放资源的过程,可是最后db3文件依然处于占用状态,请问怎么回事?过一会文件的占用状态就会恢复

0

1个回答

  if (dbo != null)
                {
                    dbo.DisConnect();
                    dbo.ReleaseDBOperator();
                   ** dbo.Dispose();**
                    dbo = null;
                }
              **  System.Data.SQLite.SQLiteConnection.ClearAllPools();**
1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SQLite优化记录 + 资源及时释放以免OOM -- 又被Java忽悠一次
今天很恼火, 大致状况是这样的, 程序直接进入数据库写操作InsertDBActivity中,异步完成80W条数据的插入, 不会OOM; 当我在进入InsertDBActivity之前先来了个用户介绍页(滑动预览6张图片), 然后换了个高清的背景图,够炫,但是悲剧的一幕发生了   在log中可以明显的看到 数据插入到40W多的时候 OOM了! 什么原因呢? 我debug追踪了好久,代码没怎么改动呀
sqlite异常:链接close()和dispose()之后任然不能释放与db文件的连接
c#使用sqlite 1.0.97.0版本, string dbFile = @"G:\test.db"; string connenctStr = string.Format(@"Data Source={0};Pooling=true;FailIfMissing=false", dbFile); SQLiteConnection m_Conne
sqlite文件被占用,如何解决
,发现文件竟然被占用了,已经关闭了数据库连接也无效,后来从网上看到需要清除连接池
数据库操作、IO操作的资源没有及时释放
错误案例 public class ReleaseRes { public void releaseDB () { Connection conn = null; APLResultSet rs = null; St
使用JDBC后千万记得关闭并释放数据库连接资源
原文地址:http://www.wangzhongyuan.com/archives/231.html 在我10月30日的一篇文章《使用JDBC后记得关闭并释放数据库连接资源噢:)》中,提到JDBC中的Mysql数据库连接Connection和Statement、Resultset使用完毕之后一定要关闭,否则会占用大量内存资源,导致内存溢出。为了验证连接关闭是否确实能够释放资源,我做了一个小...
在调用FileOutputStream的close方法之后立刻移动或操作文件会遇到文件被占用的问题
在通过FileOutputStream进行文件输出,尤其是文件内容较大的输出完成之后都需要关闭文件,正常情况下都会通过调用close方法关闭输出流。然后在某些特殊情况下,我们需要在关闭输出流之后对文件进行移动或者其他转换之类的操作,而此时你可能会遇到“文件被占用”的错误。这意味着你要操作的文件正在被另一个程序使用。我们既然已经调用了close方法,为何文件依然被占用呢? 因为文件的输出对程序而言
C# 使用Mono.SQLite进行跨平台开发
SQLite安装1. windows安装1. 进入官网下载最新的SQLite版本,找到:sqlite-tools-osx-x86-3150100.zip。[不区分64位和32位]http://www.sqlite.org/download.html2. 设置环境变量将下载的文件解压到特定的目录,并在windows上设置环境变量目录!3. 打开cmd,执行如下命令进行安装配置调试:sqlite3 te
pdo操作sqlite数据库
sqlite数据库介绍 一款轻量级关系数据库,不需要单独的进程启动或停止服务,很适合作为左面程序或者手机应用的内置数据库 sqlite数据类型有下面几种 NULL: 表示该值为NULL值 INTEGER: 无符号整型值,相当于mysql中的int相关的几种类型 REAL: 浮点值,相当于mysql中的float、double和decimal TEXT: 文本字符串,存储使用的编码方式为...
c#读Word文件,最后彻底释放资源
字号:大 中 小 private void button5_Click(object sender, System.EventArgs e)     {       object filename="D:\\nettest\\window\\serial\\a.doc"; //要打开的文档路径       string strKey="正文"; //要搜索的文本
处理Linux系统下已删除文件继续占用空间问题
在Linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。这种情况下,通过df和du命令查找的磁盘空间, 在Linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内
Java释放资源
由于数据库链接非常的稀缺, 所以在不用链接的时候要将相应的资源给释放掉 所有资源都是基于 Connection对象去获得的. Connection conn= DriverManger.getConnection();Statement stmt =conn. createStatement()ResultSet rs =Stmt.executeQuery(); 一般关闭资源的代码是放在final
解决Sqlite数据库,数据删除后占用空间不变的问题
sqlite数据库库文件在使用过后,随着数据的增多,文件大小也会随之变大。但是在把所有表中数据删除以后发现sqlite数据库文件大小没有变化,还是占用原来大小的空间。 造成这种情况的原因是:sqlite在之前使用的时候,随着数据的插入,会分配磁盘空间来供使用,在删除数据以后,未使用的磁盘空间会被添加到一个内在的“空闲列表”中用于存储下次插入的数据,磁盘空间不会随着数据的删除而释放给操作系统。
线程资源释放 问题解决
一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如何保证线程终止时能顺利
SQLite内存数据库使用有感
  SQLite不仅可以把数据库 放在硬盘上,还可以放在内存中(sqlite3_open(":memory:", &db)),经测试,同样条件下数据库放在内存中比放在硬盘上插入记录速度快差不多3倍。但数据库放在内存中时有如下缺陷:1、断电或程序崩溃后数据库就会消失,你需要定期Attach到硬盘上备份;2、在内存中的数据库不能被别的进程访问(因为没名字,以后可能支持),即使在多线程下,也得使
关于sqlite3使用操作中内存耗尽导致进程被kill的问题
最近由于项目的需要,在cortex-A8板子上开发一个关于分容柜控制的程序。需要用网络与上位机通讯。由于检测需要用到脱机工作。保存至少1440*150条数据,所以引进了sqlite数据库。移植了一个sqlite3动态库进行。发现程序跑到了两小时以上,外界的LCD操作会变得缓慢,网络上接收到的数据也是时有时无。然后一段时间发现程序崩溃了。信息显示的是程序过大,被杀死。这个问题也是找了挺久,一直以为是
解决sqlite删除数据后,文件大小不变问题(VACUUM)
删除表格的全部数据: DELETE FROM [*****]
解决sqlite 删除记录后数据库文件大小不变
最的做的项目中要有到sqlite数据存储,写了测试程序进行测试,存入300万条记录,占用flash大小为 86.1M,当把表中的记录全部删除后发后数据库文件大小依然是 86.1M; 原因是: sqlite采用的是变长纪录存储,当你从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据,用于提 高效率,磁盘空间并没有丢失,但也不向操作系统返回磁盘空
操作系统(进程篇)
一、填空 1.进程在执行过程中有三种基本状态,它们是 运行 态、 就绪 态和 阻塞 态。 2.系统中一个进程由 程序 、 数据集合 和 进程控制块(PCB) 三部分组成。 3.在多道程序设计系统中,进程是一个 动 态概念,程序是一个 静 态概念。 4.在一个单CPU系统中,若有5个用户进程。假设当前系统为用户态,则处于就绪状态的用户进程最多有 4 个,最少有 0 个。 注意,题目里给出的是假设当前...
SQLite操作公共类
SQLite操作公共类
数据库一直显示为正在还原(restoring)状态--处理
备份一数据库:完整备份、差异备份、事务日志备份--测试 进行还原时,提示还原成功,可是数据库一直显示为正在还原(restoring)状态。 可以从通过“select * from sysdatabases”查到数据库名,但是无法操作。  若确认还原完毕,可以用以下代码解决: restore database YourDB with recovery --切换至正常状态--RE
ASP使用SQlite遇到的部分问题
一、Unable to open the database file,一般有两个原因导致: 1.数据库所在目录要求权限比较高,需要修改文件目录权限(比如将其对Everyone开放所有权限,这种方法比较简单,但是安全性较低); 2.建立Sqlite链接,数据库文件目录有误,常见地址格式如下: DataBasePath=@"Data Source=" +HttpContext.Current.Serv...
Activity在onStop后到底处于什么状态
Activity在onStop后到底处于什么状态
误删WAL日志后如何启动数据库
WAL日志是瀚高数据库至关重要的日志文件,数据恢复的重要依靠保障,如果误删了数据库会怎样呢? 模拟情况:   [highgo@sds1 data]$ pg_ctl start server starting [highgo@sds1 data]$ LOG: 00000: database system was shut down at 2018-11-14 23:31:31 CST LOG...
qtSqlite(Qt对多个sqlite数据库的操作以及文件读写)
Qt自带了sqlite的驱动,也有各种文件的读写操作,用起来很是方便,这里仅仅是做了一个简单的封装,方便多个数据库和多个文件的操作。
mysql delete表数据后,如何解决空间大小不变的问题?
背景: 因为每天都有数个手机数据的定时任务,且每天收集的数据中存在重复数据的问题,数据库的某张表空间越来越大。整个数据库实例的空间是30GB,一张表就占了22GB,导致数据的查询越来越慢,因此决定删除重复数据。 实施: 删重复数据采用的方法是直接delete where,总数据量200W+行,删完后大概还有70W行,搞完直接回家睡大觉 突然: 才删了过了3天,突然收到告警,说数据库的表空间
关于sqlite3删除表内数据后,数据库大小仍然不 变的问题
最近由于项目的需要,用到了sqlite3数据库相关的操作。因为之前用的是QT中自带的,不是用C语言来操作,不过总的来说相差不大。之前是在 操作数据库过程中,会导致内存不断的增加。后来是发现操作的过程中很多内存没有释放。但是最近又有新的问题是,在我删除表中的数据后,发现数据库文件的大小仍然不变,而且下次打开数据库后,发现仍然占用着系统的内存。找了很多方法,终于让我找到了根本原因。原来是因为从Sqli
关于MappedByteBuffer占用内存和文件关闭
问题:MappedByteBuffer内存占用和文件关闭等不确定问题,被MappedByteBuffer打开的文件只有在垃圾收集时才会被关闭。 业务场景 定时任务:操作文件 scheduExec.scheduleWithFixedDelay(new CreateCPWordToFSExecutorTask(), 0, PERIOD_DAY, TimeUnit.MILLISECONDS);//
C# 资源释放及dispose、close方法
需要明确一下C#程序(或者说.NET)中的资源。简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象; 非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等; 毫无例外地,如果我们的类型使用到了非托管资源,或者需要显式释放的托管资源,那么,就需要让类型继
内存数据库性能评测之SQLite数据库
注册 我的搜狐邮件 欢迎入驻搜狐媒体平台 内存数据库性能评测之SQLite数据库 复制链接打印 2012年10月17日00:05 | 我来说两句(0人参与) | 保存到博客 IT168网   【IT168 专稿】SQLite是一款轻型的数据库,它占用资源非常的低
判断文件是否被占用"打开"(自己用)
打开一下文件就知道有没有被占用了,占用了打开就会报错,报错就返回True /// <summary> /// 判断文件是否被占用,返回bool值,被占用返回True /// </summary> /// <param name="fileName">带文件名的路径,带后缀</param> /// <re...
Android SQLite数据库优化及注意事项
数据库使用优化及注意事项 数据库简介 后台数据库一般是MySQL 、Oracle 、SQL Server ,而Android 中的数据库是SQLite。今天要说的主要是SQLite在使用中的一些注意事项以及问题。 问题来源:公司有个项目,是用于石油炼化工厂巡检使用。就是录入所有巡检过程中的数据,上传至服务器,同时保存在本地。安卓中,本地数据库使用一般要么就是自己新建数据,继承Android自带的S...
sqlite3 判断数据库和表的状态
1、判断数据库是否存在,如果存在rc!=0 否则==0 ,同时数据库不存在的话也不会创建caen.db3,     此处与sqlite3_open不用!    =》rc = sqlite3_open_v2("caen.db3", &db, SQLITE_OPEN_READWRITE, NULL); 2、判断数据库中某个表的存在,如果sql执行成功zErrMsg=NULL,否则给出错误信息
Exchange OWA页面无法搜索的问题,解决方法
OWA登录用户邮箱,无法搜索。提示为“无法完成此操作,请重试”。 检查MailBox服务器中的MSExchangeSearch Indexer正常启动。 系统日志中有下列错误: 来源:ExchangeStoreDB 事件ID:222 在"2013/3/14 16:04:16",此服务器上的 Microsoft Exchange Information Store 数据库"1"副本遇到损坏
C#与数据库SQLite:在C#项目中使用SQLite
下面这两个是不同的:   1.System.Data.SQLite ( http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki) 2.SQLite(https://www.sqlite.org/download.html) 尽管是一个网站,但是,是两个产品。前者可用于C#,后者可以直接使用。前者的安装目录包含的文件...
关于Oracle 顽固的KILLED 状态的SESSION的处理
最近在执行一个大业务量的存储过程,中间中断,造成了对某个表的锁。这时我再想修改存储过程,则因为这个锁的存在,一直在等待。在pl/sql developer中将这个session的状态设置为KILLED,结果等了半天也没有被PMON给清除掉,一直在那锁表。参考一些资料,可以用下面的方法解锁。--下面这个sql语句,可以列出来各个脚本,需要录入sid,这个sid可以从pl/sql develo
解决sqlite删除数据后,文件大小不变问题
说了这么多,没进主题,我的主题是给Sqlite在删除数据后擦屁股。 大家或许发现了,当你在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变。 就用我的项目来说,3M的数据删除后,sqlite的.db文件依然是3M,而我要的结果实际上只有35K,在压缩一下也就10几K了。为什么会出现这个问题,SqlCe的.sdf文件是即删即减的。   原因是: 当你从S
C#中如何使用SQLite数据库
1.首先需要一下两个文件 2.它的工具类如下  class SQLiteHelper     {         public static SQLiteConnection conn = null;         public static string tableName = "msg_record";         /**          * 获取
SQLite本地数据库的应用
说明 我们知道savedInstanceState、文件与SharedPreference都能够保存数据,但他们都无法满足应用持久化保存数据的需求,Android为此提供了长期存储地:即SQLite数据库。概述SQLite是一个轻量级的关系型数据库,运算速度快,占用资源少,很适合在移动设备上使用, 不仅支持标准SQL语法,还遵循ACID(数据库事务)原则,无需账号,使用起来非常方便!SQLite是
SQL Server 数据库所能处在的几种状态
数据库所能处在的几种状态,一个完整的模型如下:              数据库所能处在的状态关系         上面的几种状态的具体转换关系超出了本文的讨论范围,但是这里我会强调两种和日志损坏关系很大的状态:RECOVERY_PENDING和SUSPECT状态。     假如出现了数据库没有正常关闭,也就是还有数据没有CheckPoint到磁盘,如果数据库要启动就必须经历Reco
ORACLE数据库的三种状态:RESTRICT、QUIESCE和SUSPEND
<br />在Oracle中,有时候要执行一些管理性的操作,而这些操作运行的时候不能有其他用户同时访问数据库。对于这种情况可以设置系统进入RESTRICTED SESSION状态禁止普通用户登陆数据库。<br />数据库可以在启动的时候以RESTRICT方式来启动数据库:<br />SQL> conn / as sysdba已连接。<br />SQL> shutdown immediate数据库已经关闭。已经卸载数据库。<br />ORACLE 例程已经关闭。<br />SQL> startup restr
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java学习sqlite python操作数据库菜鸟教程