sqlite数据库内存泄露插入数据导致内存泄露,该怎么处理

android开发(13)
今天在写一个工程时,发现sqlite使用query的insertOrThrow记录插入接口时发现,单条记录插入时间在10-30ms之间,插入操作中有查询数据库操作(判重),如此上千条数据操作时间岂不亚历山大,google后发现android的数据库事务处理机制导致的,对于批量的上百条记录插入、删除、修改操作,在批量开始时要启动事务,完毕后提交此次事务并结束该事务:
解决方法:
添加事务处理,最好上百条数据库批量操作就使用此方法
//数据插入操作之前
dataBase.beginTransaction();&&&&&&&&//手动设置开始事务
//数据插入操作循环
//操作完毕
dataBase.setTransactionSuccessful();&&&&&&&&//设置事务处理成功,不设置会自动回滚不提交
dataBase.endTransaction();&&&&&&&&//处理完成&
感谢http://blog.csdn.net/pandarick/article/details/7385851提供的解决方案。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:58832次
排名:千里之外
原创:18篇
转载:11篇
评论:15条
(1)(1)(1)(2)(2)(1)(3)(2)(1)(1)(6)(2)(2)(2)(1)(1)& 初用sqlite3插入数据时,插入每条数据大概需要100ms左右。如果是批量导入,可以引进事物提高速度。但是假设你的业务是每间隔几秒插入几条数据,显然100ms是不能容许的。解决办法是,在调用sqlite3_open函数后添加下面一行代码:
&&& sqlite3_exec(db, "PRAGMA synchronous = OFF; ", 0,0,0);
&&& 上面的解决办法貌似治标不治本,为什么加上上面的代码行,速度会提高那么多?网上解释如下:
1.如何设置:
PRAGMA synchronous = FULL; (2)&PRAGMA synchronous = NORMAL; (1)&PRAGMA synchronous = OFF; (0)
2.参数含义:
当synchronous设置为FULL (2), SQLite数据库引擎在紧急时刻会暂停以确定数据已经写入磁盘。这使系统崩溃或电源出问题时能确保数据库在重起后不会损坏。FULL synchronous很安全但很慢。
当synchronous设置为NORMAL, SQLite数据库引擎在大部分紧急时刻会暂停,但不像FULL模式下那么频繁。 NORMAL模式下有很小的几率(但不是不存在)发生电源故障导致数据库损坏的情况。但实际上,在这种情况 下很可能你的硬盘已经不能使用,或者发生了其他的不可恢复的硬件错误。
设置为synchronous OFF (0)时,SQLite在传递数据给系统以后直接继续而不暂停。若运行SQLite的应用程序崩溃, 数据不会损伤,但在系统崩溃或写入数据时意外断电的情况下数据库可能会损坏。另一方面,在synchronous OFF时 一些操作可能会快50倍甚至更多。在SQLite 2中,缺省值为NORMAL.而在3中修改为FULL。
如果有定期备份的机制,而且少量数据丢失可接受,用OFF。
&&&& 注意上面红色加粗的字样。总结:如果你的数据对安全性完整性等要求不是太高,可以采用设置为0的方法,毕竟只是&数据库可能会损坏&,至于损坏几率为多大,笔者也暂不知晓。。。。。。还没遇到过损坏,不知什么时候才会发生。
阅读(...) 评论()操作SQLite数据库时碰到的问题,急求帮助
自己做了个DEMO,对SQLite的增删改查,数据库是创建在手机的SD卡上的。现在碰到个问题,就是真机调试的时候,创建数据库,但不建立数据表,把数据库文件拷贝到电脑能用SQLiteSpy打开。但是如果创建数据表或者对数据库进行增删改查后,再把数据库文件拷贝到电脑就无法用SQLiteSpy打开,会报:SQLite&Error&26&-file&is&encrypted&or&is&not&a&database的错误。
------解决方案--------------------
没碰到过这个问题,我的都能打开,不过我电脑用的数据库工具是Navicat&Premium
关于sqlite破解问题 把数据存入到sqlite后,别人有办法破解看到sqlite的结构啊,数据什么的吗? 如果有,请问怎么预防?重要字段加密?
求大神解答。
------解决方案--------------------
sqlite的数据库是不支持加密,任何sqlite工具都可以看到sqlite数据库的内容。
据说sqlite的作者提供付费版本的sqlite了,可以设密码。仅仅据说。
android 连接sqlite 问题 报错如下:
android.database.sqlite.SQLiteException: unable to open database file:
查询的时候没问题,插入的时候有问题,数据库是放在/data/data/net.gzcss.ydyw/databases/ 这个目录下面
android如何兼容本地数据库 前一段时间做了公司的android项目,因为有些数据量较大,采用的本地的SQLite附加模式用的本地数据库,然后,最近android4.1更新,结果发现4.1不兼容。。用到本地数据库就报错,求大神解决。。
------最佳解决方案-------------------- 报什么错....
------其他解决方案-------------------- 数据库
android联系人应用如何调到数据库操作的? 比如说ContactSaveService怎么联系到ContactsProvider2的,通过哪些函数?
------最佳解决方案-------------------- 主要是通过获得ContentResolver类对数据库进行操作的
finalContentResolverresolver&n
android 蓝牙连接问题 在线等啊 求帮助 谢谢了 android编程实现手机和蓝牙音箱的连接 为什么老是连不上呢 !!!纠结了很久了 试过了很多UUID 就是没能和蓝牙音箱连接上。但是有的和电脑连得上。 求帮助啊
android 如何实现附加现有数据库?而不是每次安装的时候都创建 android如何实现附加现有数据库?而不是每次安装的时候都创建新的数据库。
最近做一个应用,在数据库中要内置很多数据,但有不想在每次安装的时候都重新创建数据库并插入数据,原因是插入数据时间较长,用户体验不好,所以特地想问问大家,有没有什么办法,让我一次吧数据库的内容都
异步加载 重定向出问题求大神帮助 这个问题折腾了我一个下午,结果还是没解决。
主要代码:
privatevoidupdateBusinessItemInfoList(){ newThread(newRunnable(){
@Override publicvoidrun()
SQLite一个数据库可以同时打开两张表吗? 比如:
mDBH = new DatabaseHelper(this); db = mDBH.getWritableDatabase();
cur_db = db.query(TABLE_NAME, col, null, null, null, null, null); cur_db_2 = db.query(TABLE_NAME_2,
有关于分线程里面操作UI的问题 不是说分线程不能操作UI嘛只能通过handler再主线程里面做但是看下面的代码也并不报错呀
newThread(newRunnable(){ publicvoidrun(){ TextViewtv=(TextView)findViewById(R
请教一个Android API 帮助文档的问题 在阅读android官方文档中,看到很多类名或者接口名中间带有一个点“.”,比如
publicstaticinterface
View.OnClickListener
publicstaticclass
ScaleGestureDetector.SimpleOnScal
android远程连接mySQL数据库失败,求救?? 最近在做一个android查询mysql数据库服务器,用的是JDBC,但不知为何在建好的android项目里总是连接不上数据库。自己做的另一个java文件可以本地访问,也可以远程访问,就是建好的项目不行,检查了两天没解决,求高手指点。(功能清单上已经把internet的权限和单元测试配置好了)
public class GetData { p
求大神解答关于PreferenceActivity数据读取问题! 小弟刚开始学习android,现在有这么一个需求:通过PreferenceActivity来设置一些参数,界面也通过这个activity来实现。 在PreferenceActivity中可以用下面这种方式拿到SharedPreferences中储存的数值,通过PreferenceManager.getDefaultSharedPre
有关Android的图像问题。。 如何才能识别一个物体,并且得到这个图的模糊度。。
------解决方案-------------------- ???????没懂意思
------解决方案-------------------- 说清楚点
求问大神如何解决从后台获取数据是中文乱码问题?
try{ URLurl=newURL(urlstr); URLConnectionconn= try{ conn=url.openConnection(); InputStreamin=conn.getIn
一个安卓库文件的问题 现在我有一个安卓写好的库A,和应用B我想B引用A库里的类怎么弄啊
------最佳解决方案-------------------- 最好的办法就是拷过去。
android进程间的通信貌似有
broadcastReceiverAIDLcontentProvider
但是好像都不能支持跨进程间的类的调用把。
使用自定义的SimpleAdapter,内容由数据库读取生成的listiew如何更新 如题,请问如何更新。
SimpleCursorAdapter有changeCursor可以刷新,SimpleAdapter该如何做呢?单单的adapter.notifyDataSetChanged()没有效果。谢谢!
------解决方案--------------------
要不再试试重置adapte
android手机直连sqlserver数据库 有人做过这方面的实例吗?可以连接sqlserver数据库?
------解决方案-------------------- 不可以,大型数据库是不能在手机上运行的,只能用服务端在数据库读取,然后传递到手机上
------解决方案-------------------- 貌似手机端没有这么做的,虽然比较省事,一般的做法就是使用webservice
关于java调用c动态库的问题 各位大牛好:
小弟是新手,在这里遇到了一个问题,不知道如何解决,希望大家抽点时间帮帮忙,谢谢了
问题如下:
我在用java调用C的动态库,这期间java传了一个jstring类型的参数给c,但c这边接收到为乱码,我从网上查看了一些资料,就是jstring转为char
Activity横屏和竖屏切换问题: 我有一个工程,启动一个Activity,在这个Activity中又启动了一个新的Activity,当在这个新的Activity中执行竖屏操作后,返回到手机桌面,在新的Activity中执行横屏操作时,返回的是启动它的Activity. 我想要的是,不管在横屏或是竖屏下操作,都会返回到手机桌面。请高手赐教! 另:manifest.xml文件中有关方向的设置已经设
ListView高级应用问题 求急救啊
我是想实现这样一个效果: listview中包含了ImageView与TextView 在点击的时候
android:listSelector=&@drawable/background_title2& background_title2为一个背景图片 问题是在listview item(子项目)中的textView有一块
界面中不规则触控区域的响应 问题,求指教 也不知道标题对不对,大家看看图吧
四周是四个按键,中间圆的也是一个,没有什么头绪,看看大家有什么好的办法~谢谢
------最佳解决方案-------------------- 给你个参考http://blog.csdn.net/windspeaker/article/details/8129269
------其他解决方案------------
使用搜狐视频Android Phone客户端时发现的一些问题 策略问题
缺少社区化,用户之间无法互动。
细节问题及建议
1、 问题:登录时有一次联网过程。增加了用户等待时间,消磨用户的耐心。 建议:直接进入客户端后,再去登录,以及获取推荐的数据。
2、 问题:网络错误提示规则混乱。“推荐”、个人中心里面的“订阅”、“频道”和“搜索”初次进入页面时,如果网络错误会在页面中
有关listview点击变色的问题 我的listview点击后弹出popupwindow,现在点击后已经可以使点击的item保持住变色状态
问题是希望点击popupwindow外面后可以让item的颜色变回初始的颜色,这个问题需要怎么来设置???
这是目前出现的效果,我是在onItemClick中设置的view背景色
//点击显示
lv_patient.setOn
求助访问网络数据问题 我写了一个apk,由service启动activity窗体,在activity里我访问网络,下载视频文件到本地并进行播放。
现在遇到的一个问题是,当启动activity时,系统界面会自动跳转到账户与同步设置中,跳转界面如下:
点返回后activity并没有打开,我要的视频下载和播放任务也没有执行。
我尝试直接以activity作为程序入口,程序执
切换Tab选项卡时重新启动activity的问题 问题是这样的:希望每次切换的时候重新启动activity,其中一个activity是连接网络加载数据,如果该activity已经成功显示数据,那么在切换tab时就不需要重新启动;如果没有成功显示,则每次切换都希望重新启动该activity来连接网络再次加载,请问该怎么实现?
------解决方案-------------------- 没必要重新
android设计求思路
要做一个大致上是手机客户端上传信息到服务器,然后服务器会传到所有客户端的东西,碰到几个问题请教下。 1.选择哪种通信方式较好,个人倾向于socket 2.服务器端用自己的电脑可行吗?(我的想法是在自己电脑建立数据库作为服务器,不知道行不行) &nbsp
Android 开发时遇到的两个模拟器问题
开发环境: windows , JDK 7u10, ADTv21.0.1-543035 一.启动 Nexus 7 模拟器失败
模拟器启动出现如下错误: Starting emulator for AVD 'nexus7' Failed to allocate memory: 8 This application ha
关于viewpager的问题 大家好,我在一个layout里面定义了ViewPager开始的时候显示这个layout,然后用setcontentView显示了一个自定义的View,我现在想返回显示layout,但是layout里面的viewPager里面的内容没有显示出来,请问有人碰到过类似的情况嘛?
------解决方案-------------------- 问题解决了&nbsp
关于SQLite的菜鸟级提问~ 我想做通讯录,建了一个数据库,在新插入一个联系人的时候,我想先检测一下数据库里面有没有叫这个名字的联系人,没有的话再往数据库插入这个联系人,该怎么写代码呢? 我知道这是个菜鸟问题……可是我还是不会…… 先谢谢大家啦!
------解决方案--------------------
我接触过通讯录方面的代码,我一直没找到特别好的方案。我是象楼上说的先查询一遍,看看
java Bug? 在转换时间时,发现在1941年之前的转换就有问题。 SimpleDateFormat df = new SimpleDateFormat(&yyyy-MM-dd&); //转成没时间,Date的时间部分应该为 00:00:00
Date d= df.parse(&&);
求助Permission Denial问题 在做闹钟界面时,碰到如下问题,还请帮助下怎么解决,谢谢!
09-26 01:41:51.077: E/AndroidRuntime(2098): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bird.iphonealarmclock/com.bird.ip
android应用开发关于数据永久存储相关的问题? 在开发一个应用程序中,需对某一INT值进行保存和读取。同时,一旦保存后该值不受android系统中&设置——隐私权——恢复出厂设置&的影响。
目前想将该值保存到nvram中。在应用层中是否有直接的方法可以对NVRAM中的值进行读取和保存?
或者,是否在应用层中有存储空间可以对值进行保存,而不受and
JSON数据解析的问题,请高手帮忙 {&info&:[{&name&:&123&,&xy&:111},{&name&:&123&,&xy&:111},{&name&:&123&,&xy&:111}]}
关于socket数据传输的问题~菜鸟求救 我想做名片的传输,之前试过只传一个名字,或者只传一张图片,都可以成功(我是把它转化成byte,用inputstream的read方法和outputstream的write方法实现的),但是现在我想同时传名字,电话号码和头像图片,怎么样才能一次性传输完呢?求教大侠们,先谢过啦!
------解决方案--------------------
收到方,就按
打开android开发doc文档过慢的问题(万恶的墙)
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。 ho
求大侠帮忙啊关于HTTP连接问题 小弟刚学android不久有一个问题一直不明白就是关于HTTP请求数据,开始一直都用的是KSOAP连接WEBSERVICE的,现在要用HTTP去请求服务器,网上看过好多列子都是用的TOMCAT模拟的,有没有哪位大侠有具体的能通过广域网请求到数据的HTTP例子啊?还有一个就是关于POST的参数问题,POST传递的参数是任意传递还是必须要和服务器端约定好,然后才传递服
问一个矩阵键盘键值映射的问题,求高手指导 手里有块板子,我在GPIO接了4*4的矩阵键盘,用的是三星官方提供的矩阵键盘驱动s3c-keypad,驱动加上去后,没什么问题,但是在键值映射的时候遇到问题。
在s3c-keypad.kl文件中定义里以下内容:
key42VOLUME_UPWAKE
key58VOLUME_DOWN&nbsp
刚学习android开发几天,在做打老鼠时遇到的一些问题 语言是java,android2.2平台。
我用gridview生成了 n行m列的 imageview.
现在问题是,乍样让这些imageview变成另一种图片(即老鼠出来了,可以点击(可以点击就是添加监听器)) 关键是,乍样让老鼠的出现,同时有3个(这里暂时最多同时有3个吧。)
我现在的做法: 设个time,隔半秒就跑一次,具体做的
求助,搭建开发环境时遇到的关于dex.jar和.android文件夹的问题。 我的笔记本搭建完环境后无法创建模拟器,
在Eclipse中提示:
[9:55:49-DexLoader]SecurityException:Unabletofindfieldf
gridview中 intent传数据问题 代码如下: 主函数中 gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view, int position, long id) {关于sqlite内存数据库delete数据后,需要释放内存吗?的搜索推荐 -其他数据库-TryCatch
>> 相关推荐
关于的搜索推荐
vs2005,sqliteinmemory模式,在delete操作以后,断开数据库连接,关闭程序,vs检查到内存泄露 查了sqlite的文档,文档里好像只是说,数据库断链以后就会自动释放,但没查到这种情况,请假各位高手。
我的sqlite插入数据就会出现内存泄露。。。 之前看到有一个vacuum命令,不知道有用没,你可以看一下。。。。
#include &windows.h&void test1(){DWORD dwT;}void test2(){char *buf = new char[10240]; //增加12KB内存delete[] //内存未减少}int main(){t...
为什么有的示例上用了delete,有的用了free,而且似乎还不能相互替换(否则就报内存错误)?
------------
用delete吧,习惯
------------
new 分配的内存用...
在Linux上用C语言编写的函数里面申请了一块内存,并且返回这块内存,最终它需要释放吗?例如char *func1(int size){
tmpstr=malloc(size);
在使用sqlite3时,一开始没有注意调用函数后内存释放的问题,所以在编写的函数中,调用sqlite3的一些执行函数后,很多没有调用sqlite3的一些释放函数。请问在处理...
我的应用需要数据库预置数据,考虑到数据安全性希望加密数据库或者通过内存数据库实现,android的SQLITE如何实现加密接口?或者如何将已生成的数据库文件读入到内...
char* top = new char[10];
top[0] = '0';
top[1] = '1';
cout && top &&
delete []这时候top并不是指向第一个元素,请...
新建一快内存void WorkThread(){char * temp = new char[256];strcpy(temp,"Hello World!);MyQueue-&push(temp);}WorkThread()为线程调用的函数。void WorkT...
本帖最后由 shiyunqiang 于
10:50:55 编辑
------------
估计是 template 申请的内存大小不够,你取得的 template_length 小于文件中数字个数
用 .net 自带的system.Data.SQLite 查询过数据后内存释放不了,如果连续查询内存会不停上涨敬请指教!!!!!
------------
------------
谢谢了,!!...
sqlite中使用vacuum可以释放空闲的页,但是在linux上会出现,执行vacuum后占用的内存不会被释放。用valgrind检测,也没有内存泄露。请各位牛人帮我解答一下吧!l...
我的程序需要经常申请和释放,我每次申请的内存的大小都不固定,我就想经常申请内存,释放内存会造成内存碎片而导致程序降低效率吗?如果会又有什么方法解决呢?
extern "C" {
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
#include &signal.h&
#include &fcntl.h&g...
有一个程序,由一个主程序调用一个DLL,在主程序中,为某个结构(A)用new分配了内存,我希望在DLL中可以将分配给A的内存删除,但是事实上一旦试图删除A的指针,...
using namespace Spublic ref struct APP{String^ TheSAPP(String^ inString){TheString = inS}};public ref class BPP{public: property APP...
上代码,归并排序,使用delete无法停止,不使用反而没有问题,为什么// 归并排序.cpp : 定义控制台应用程序的入口点。//对于一维数组,实现mergesort#include "...Android在SQLite插入大量数据的时的性能优化
常规做法:for循环遍历一次向数据库插入一条记录,sqlite数据库是以文件的形式存在磁盘中,就相当于每次访问时都要打开一次文件,每一次写入都是一次 IO操作,效率很慢改进:1:开启事务,这是必须要做的,在for循环外开启事务,循环中插入数据,循环结束关闭事务。当所有插入完成后,再一次性写入数据库。db.beginTransaction();&&&&&& //手动设置开始事务//数据插入操作循环for(int,int,int){}db.setTransactionSuccessful();&&&&&& //设置事务处理成功,不设置会自动回滚不提交db.endTransaction();&&&&&& //处理完成2:使用SqliteStatement,方法1和方法2结合使用后(最外层开启事务,然后使用SqliteStatement操作,最后关闭事务)
最新教程周点击榜
微信扫一扫}

我要回帖

更多关于 sqlite 内存数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信