SQLite数据库,应用程序没有关闭游标或数据库对象

使用Python操作数据库和使用SQLite创建数据库 程序运行的时候,数据都是在内存中的。 数据库都提供了标准化接口(API) 定义了Python数据库API接口的各个部分,若模块接口,连接对象,游标对象,类型对象和构造器,DB API的可选扩展以及可选的错误处理机制。 连接对象 数据库连接对象主要提供获取数据库游标对象和提交/回滚事务的方法,以及关闭数据库连接。 使用connect()函数获取连接对象 ... 阅读详情
Android 2.3.3           
Eclipse Version: 3.7.0           
LogCat  


LogCat 报错信息:

02-13 11:58:13.759: ERROR/Database(432): close() was never explicitly called on database '/data/data/com.taobao.htc/databases/taobaoHtc.db' 
02-13 11:58:13.759: ERROR/Database(432): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1847)
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
02-13 11:58:13.759: ERROR/Database(432): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:544)
02-13 11:58:13.759: ERROR/Database(432): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.db.RecordDBHelper.query(RecordDBHelper.java:49)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.manage.RecordDBopt.get(RecordDBopt.java:78)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.manage.RecordMessage.sendMseeage(RecordMessage.java:111)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.manage.RecordMessage.sendMseeage(RecordMessage.java:87)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.Report.run(Report.java:49)
02-13 11:58:13.759: ERROR/Database(432): at java.lang.Thread.run(Thread.java:1019)
02-13 11:58:13.830: WARN/ActivityManager(62): Launch timeout has expired, giving up wake lock!
02-13 11:58:14.381: DEBUG/dalvikvm(432): GC_CONCURRENT freed 771K, 57% free 2908K/6727K, external 2013K/2137K, paused 7ms+5ms
02-13 11:58:14.630: DEBUG/dalvikvm(432): GC_FOR_MALLOC freed 867K, 58% free 2836K/6727K, external 2013K/2137K, paused 178ms


发生错误原因分析:

主要错误:

02-13 11:58:13.759: ERROR/Database(432): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here


出错处代码

		SQLiteDatabase db = getWritableDatabase();

 

意思是指在此处打开数据库操作之前,应用程序没有关闭游标或数据库对象。

在应用中,对数据库操作完成后,应该对游标及数据库进行关闭操作

		if (!cur.isClosed()) {
			cur.close();
		}
		db.close();


解决办法:

检查操作数据库的相关源代码,增加关闭“cursor or database object”的代码 。

PS。


 

使用 SQLite 数据库实现简单的数据管理系统 本项目的目的是利用 SQLite 数据库构建一个简单的数据管理系统。SQLite 是一种轻量级的嵌入式数据库,无需单独的服务器进程,非常适合小型应用程序。本数据管理系统将涵盖基本的数据操作,如数据的插入、查询、更新和删除,适用于需要对少量数据进行简单管理的场景,例如个人信息管理、小型业务数据记录等。本文将首先介绍 SQLite 的核心概念和相关联系,包括其架构和工作原理。接着详细讲解使用 Python 操作 SQLite 数据库的核心算法原理和具体步骤。 阅读详情

相关推荐

【100天精通python】Day31:使用python操作数据库_数据库编程接口,连接对象和游标对象,数据库连接配置

本文介绍数据库编程接口,连接对象和游标对象,数据库连接配置

qq_35831906的博客 1542

android进入sqlite的方法,如何在Android中正确打开/关闭SQLite数据库

我有一个应用程序功能正常,不强制关闭或崩溃.但是当我看着LogCat时,它偶尔会给我这个:05-20 15:24:55.338: E/SQLiteDatabase(12707): close() was never explicitly called on database '/data/data/com.---.--/databases/debt.db'05-20 15:24:55.338: E...

weixin_39887546的博客 518

ESP-IDF 利用ESP32构建智能音乐播放器(一)---------- 实现SD卡MP3文件的解码与播放

本文详细介绍了如何利用ESP32和ESP-IDF开发框架,从零开始构建一个智能音乐播放器。文章重点讲解了如何通过SD卡模块读取MP3文件,并集成Helix MP3解码库进行软件解码,最终通过I2S接口驱动音频模块实现播放。内容涵盖硬件连接、软件环境搭建、核心解码与输出逻辑,为嵌入式音频开发提供了完整的实战指南。

weixin_29163797的博客 234

Application did not close the cursor or database object that was opened here

        这两天调试程序的时候,发现LogCat里时不时的会打出"DatabaseObjectNotClosedException"这个异常,异常的详细堆栈信息如下:   close() was never explicitly called on database '/data/data/cn.eric.sqlitedbdemo/databases/people.db' android...

iteye_5704的博客 700

CLIP-Count代码配置以及踩坑记录

CLIP-Count代码配置以及踩坑记录

学术菜鸡 1011

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

qq_1432825237的博客 3989

android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or da

这个异常的抛出并没有让程序崩溃。     这些异常信息来源于SQLiteDatabase类的finalize方法。从异常的信息"close() was never explicitly called on database ,Application did not close

5869

别再让COGI拖慢你的SAP接口!手把手教你配置BAPI_PRODORDCONF_CREATE_TT的同步货物移动

本文深入解析SAP生产订单报工接口中的COGI问题,通过BAPI_PRODORDCONF_CREATE_TT的同步配置实战,解决异步更新导致的性能瓶颈。文章详细介绍了增强点配置和性能验证,帮助用户彻底消除COGI堆积,提升接口效率。

weixin_29214691的博客 482

SQLite 爆net.sqlcipher.database.DatabaseObjectNotClosedException

 net.sqlcipher.database.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here这个报错说游标没有关闭,而我们检查了下 发现代码中即使关闭了还是没有用其实这个是在使用cursor的中途 程序出现了其他的错误情,退...

zoufeng5492的博客 1232

AI Agent Harness Engineering 监控与日志系统搭建

在生成式AI(Generative AI)与大语言模型(LLM)普及的今天,AI Agent(自主智能代理)已经成为了继「LLM API调用」「单轮/多轮对话」之后的第三代AI应用范式——Agent能够自主感知环境、制定多步决策、调用外部工具(Web搜索、数据库、RAG检索、企业系统API等)、执行复杂任务并优化自身策略。然而,随着Agent应用从Demo原型快速落地到企业生产环境,一系列与工程化落地强绑定的可观测性(Observability)问题正在成为Agent项目成功上线、稳定运行的最大瓶颈。

AI开发架构师 184

3大绝招!MySQL如何轻松搞定文本、图像和视频的多模态数据分析?

首先,让我们来了解一下“多模态”到底是什么意思。简单来说,多模态指的是能够同时处理不同类型数据(如文本、图像、音频等)的能力。传统的数据库往往只能专注于一种或几种特定类型的数据,比如关系型数据库主要处理结构化数据,而文档型数据库则更适合非结构化数据。但是现在,随着技术的进步,像MySQL这样的数据库也开始支持更加复杂的数据模型,允许我们在同一个系统内处理多种格式的数据。通过上述五个部分的详细介绍,相信你现在应该对如何利用MySQL进行多模态数据分析有了更清晰的认识。

java专栏 2114

Python学习笔记十二(数据库游标对象)

微信公众号:小白图像与视觉 关于技术、关注yysilence00。有问题或建议, 请公众号留言。 Python学习笔记十二(数据库游标对象) introduction Python 中常用的 Database Drivers: Mysql、PostgreSQL、NoSQL Databases、Other Relational Databases(apsw、dataset、pymssql) ...

Ewing_yy的博客 1992

【DRAM存储器六十八】DDR5介绍--DQS Interval Oscillator—动态时序校准利器

DDR5内存采用DQS间隔振荡器(DQSIntervalOscillator)技术应对高速数据传输中的时序漂移问题。该技术通过测量DQS信号在可编程时间窗口内的振荡次数(16位计数值),动态监测温度/电压变化导致的DQS-DQ延迟偏移。控制器通过MPC命令启停振荡器,读取MR46/MR47寄存器获取计数值,并与基准值对比来调整DQS相位,确保数据采样窗口始终处于最佳位置。该机制使DDR5在8400MT/s高速率下仍能保持数据可靠性,有效补偿±0.48tCK的时序偏移。

highman110的博客 149

python sqlite3模块详解 安装和导入 连接数据库 创建游标 执行SQL命令 提交更改 查询数据 关闭连接 错误处理 总结——《跟老吕学Python编程》

Python的sqlite3模块为SQLite数据库提供了一个简单而强大的接口。通过使用DB-API 2.0规范,可以轻松地执行SQL命令、查询数据和管理数据库连接。尽管SQLite是一个轻量级的数据库,但它提供了许多关系型数据库的功能,如事务处理、索引和约束等。这使得它成为许多应用程序的理想选择,特别是那些需要嵌入式数据库或轻量级数据库解决方案的应用程序。👨‍💻博主Python老吕评论,您的举手之劳将对我提供了无限的写作动力!🤞🔥《跟老吕学Python编程》《Python游戏开发实战讲解》

Python老吕的博客 1313

【N32L40X】学习笔记12-规则组+注入组+外部触发启动

使用定时器触发规则通道开始采集数据,采集完成后使用dma传输数据,并启动注入通道转换数据,注入通道转换完成后产生中断,中断中读物注入通道数据。

Car12 422

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

sqlite3 模块-----轻型数据库

Python SQLITE数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。它使用一个文件存储整个数据库,操作十分方便。它的最大优点是使用方便,功能相比于其它大型数据库来说,确实有些差距。但是性能表现上,SQLITE并不逊色。麻雀虽小,五脏俱全, sqlite 实现了多数 sql-92 的标准,比如说 transaction 、 trigger 和...

鲨鱼儿的博客 317

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android.database.sqlite.databaseobjectnotclosedexception:应用程序没有关闭的光标或数据库对象

每次查询的时候都会报这个异常,说应用程序没关闭打开的数据库对象或者是游标。     在执行查询的时候,不能关闭数据库对象,如果关闭了那么在后面调用方法就得不到数据,所以在返回游标之前不能关闭数据库对象,所以就只能用一个办法来关闭数据库了。    @Override  protected void finalize() throws Throwable {   // TODO

小&哥 1152

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python操作数据库游标_Python 数据库游标对象

前言Python 中常用的 Database Drivers:Mysql、PostgreSQL、NoSQL Databases、Other Relational Databases(apsw、dataset、pymssql)Python 本身嵌入了一款轻量级数据库 SQLite(Django 也默认使用的是这个),其他数据库则需要额外安装了。Mysql在 Python 中常用的 Mysql 库是 ...

weixin_39976748的博客 620

数据库__DB-API、SQLite

2019.5.26:(6.4更新~~) 学习内容:DB-API、了解SQLite(如何选择一个合适的数据库) DB-API:     官方文档:https://www.python.org/dev/peps/pep-0249/       重点看:   (thx:https://www.jb51.net/article/104820.htm)   大多数Pyth...

weixin_30257433的博客 322

取出SQLite数据(基本游标)

前面一节中已经为Starbuzz创建了一个SQLite帮助器。目前还是从Java Drink类获取数据,这时候要修改这个应用从SQLite数据库获取数据。本文所有代码均存放于。

weixin_44014982的博客 1079

python sqlite3 db path_python 操作sqlite数据库

'''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不存在的时候连接对象会自动创建数据库文件;如果数据库文件已经存在,则连接对象不会再创建数据库文件,而是直接打开该数据库文件。连接对象可以是硬盘上面的数据库文件,也可以是建立在内存中的,在内存中的数据库执行完...

weixin_39553423的博客 403

PYTHON 数据库 之 sqlite3

使用sqlite3 使用sqlite3模块的connect方法来创建/打开数据库,需要指定数据库路径,不存在则创建一个新的数据库 导入模块 import sqlite3 建立连接 con = sqlite3.connect('E:\\2018\\spider\\first.db') 不仅可以在硬盘中创建数据库文件,还可以在内存中创建 con = sqlite3.connect(':memory...

戈扬的博客 1万+
上一篇: 操作SQLite数据库报错:“绑定或列的索引超出范围”
下一篇: SQLite抛出错误“未关闭游标及数据库对象”特殊原因一例
DebugLog
博客等级 码龄15年 10粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值