[转]android sqlite db-journal文件产生原因及说明

今天在android中将sqlite的数据库文件生成在SD卡上的过程中,发现生成的.db文件的旁边生成了一个大小为0的与数据库文件同名的.db-journal文件,不明白此文件的用途,于是google了sqlite的官方文档。

发现该文件的用途如下:

该文件是sqlite的一个临时的日志文件,主要用于sqlite事务回滚机制,在事务开始时产生,在事务结束时删除;当程序发生崩溃或者系统断电时该文件将留在磁盘上,以便下次程序运行时进行事务回滚。

但是我创建数据库时将事务结束了,同时程序也没有崩溃,为什么还是会在磁盘上产生 .db-journal 文件呢?

深入研究,发现这是sqlite生成日志文件的不同模式造成的,在android采用的这种模式下,.db-journal 文件是永久的留在磁盘上不会被自动清除的,如果没有发生事务回滚那么.db-journal文件的大小为0,这样就避免了每次生成和删除 .db-journal 文件的开销。

到此,所有的疑惑解开了。

原文链接:http://blog.csdn.net/kaiwii/article/details/8609093

时间: 2024-10-01 03:13:19

[转]android sqlite db-journal文件产生原因及说明的相关文章

Android SQLite DB的封装

DbOpenHelper: package com.example.db_demo01.DB; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DbOpenHelper extends SQLiteOpenHelper { private static String

android不生成R文件的原因与解决方法

1.默认SDK环境与引入的环境不一致引起的. 2. SDK有错误或找不到SDK引起的. 2. default.propites文件中定义的target=android-8与eclipse设置的不一致引起的. 3. 项目中有错误,xml文件错误,资源文件名不合法:有大写字符,数字开头,有空格等引起的. 1,当自己建立的工程没有出现R时,先clean一下,避免以前的错误. 2,重新build一下工程,如果一下不成,多build几下,会好点的. 3.想一想自已刚改过的地方是否有不合法的写法,或xml错

Android调用Sqlite数据库时自动生成db-journal文件的原因

数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便是Sqlite的一个临时的日志文件,主要用于sqlite事务回滚机制,在事务开始时产生, 在事务结束时删除.当程序发生崩溃或者系统断电时该文件将留在磁盘上,以便下次程序运行时进行事务回滚. 在android模式下,journal文件是永久的留在磁盘上不会被自动清除的.如果没有发生事务回滚那么.db-

Android sqlite db-journal文件的产生和原因

留心的人会发现在android中将sqlite的数据库文件生成在SD卡上的过程中,发现生成的.db文件的旁边 生成了一个大小为0的与数据库文件同名的.db-journal文件,不明白此文件的用途,于是 google了sqlite的官方文档,发现该文件的用途如下: 该文件是sqlite的一个临时的日志文件,主要用于sqlite事务回滚机制,在事务开始时产生, 在事务结束时删除:当程序发生崩溃或者系统断电时该文件将留在磁盘上,以便下次程序运行 时进行事务回滚. 但是我创建数据库时将事务结束了,同时程

用adb pull命令从android系统中读取文件失败的原因及解决办法

问题:使用adb pull命令从android系统中读取文件失败.显示:Permission denied 原因:是由于文件权限原因引起. 使用ls -l命令查看android系统中的文件权限为: -rw-rw---- app_51   app_51 也就是说,该文件只有app_51用户以及app_51群组拥有读写权限,而adb shell的用户为shell,既不是app_51用户,也不在app_51群组中,所以没有权限读取这个文件.所以就出现了 Permission denied. 解决方法:

Android Sqlite基本命令

要查看数据库,首先必须要找到db文件,如果拷贝到电脑上,查看的方法比较多,在手机上,用命令查看比较直接和方便. 首先要找到数据库的位置,一般数据库时存放在程序的私有目录,所以要获取root权限. 确保开发工具已经连接上手机,打开命令行,输入adb shell 这时还没有获取root权限,输入su,手机会弹出提示,允许获取root权限 后缀变为"#",成功获取root权限,这时可以进入应用程序的私有目录, 输入cd data/data/程序包名/databases/,进入数据库的目录 下

Android SQLite的使用,基本的增删改查效果,以及ListView的效果显示

1 package com.example.sqlitetest; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import android.content.ContentValues; 6 import android.content.Context; 7 import android.database.Cursor; 8 import android.database.sqlite.SQLiteDatabase; 9

Android+Sqlite 实现古诗阅读应用(二)

传送门:Android+Sqlite 实现古诗阅读应用(一):http://www.cnblogs.com/lfk-dsk/p/4492974.html Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择诗来进行显示,这也是我做这个东西的初衷,我想找我到底有哪些古诗没有读过,更想感受一下风吹哪页看哪页的闲适(扯远了=-=!),所以功能现在差不多算是结束了, 不过一个古诗应用这么丑可不行,还有就是,我找到了我要

Android SQLite总结(一)

前言 对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取.下面就向大家介绍一下SQLite常用的操作方法.本篇文章主要用到SQLiteDatabase的一些函数.废话少说,直接贴代码!由于数据库中操作的对象时Student类,因此我们看一下Student.java代码: [java]   view plain copy <EMBED id=ZeroClipboardMovie_1 name=ZeroClipboardMovie_1 ty