关闭SQLite3中的journal暂存档
最近经常碰到类似的sqlite文件损坏的问题,由于使用的是非WAL模式,而且是PRAGMA journal_mode = DELETE。对于这种临时的备份文件如何影响的,这里摘一篇作为资料收集。 摘自:http://www.it165.net/database/html/201310/4691.html 相信很多使用SQLite3当做数据库的人都会一个现象,那就是当SQLite3有做写入的动作时,SQLite3会自动产生一个名为"数据库名称-journal"的暂存档。这是做什么用的呢? 第一种方法: 第二种方法: 第二种方法的缺点二在如果需要使用交易模式(Transaction)进行操作时,可以透过"PRAGMA journal_mode = DELETE"指令,修改回原本的journal模式(journal_mode),就可以使用交易模式(Transaction)。 view source print ? 01.
//请先引用 using System.Data.SQLite;
02.
03.
const string path = @ "C:testDB.db3" ;
04.
if (File.Exists(path)) //判断档案是否存在。是
05.
{
06.
File.Delete(path);
07.
}
08.
09.
SQLiteConnection.CreateFile(path);//建立SQLite数据库档案
10.
11.
using(SQLiteConnection conn = new SQLiteConnection( "Data Source=" + path + ";Version=3;" )) //建立联机
12.
{
13.
14.
(SQLiteCommand comm = conn.CreateCommand())
15.
16.
conn.Open(); //开启数据库
17.
18.
comm.CommandText ="PRAGMA journal_mode=Off;" ; //journal mode 设定为 OFF(关闭journal模式)
19.
comm.ExecuteNonQuery();
20.
//---下面便只能以journal_mode=Off方式,进行操作-----
21.
22.
//---做一些操作-------------------------------------
23.
"CREATE TABLE text_table(id int,value text);"//建立'text_table'数据表
24.
comm.ExecuteNonQuery();
25.
26.
for ( int i = 0; i < 10; ++i)
27.
28.
//新增一笔(列)数据到数据表
29.
"Insert INTO text_table (id,value) VALUES (0,'Hello World')" 30.
31.
32.
//---------------------------------------------------
33.
34.
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |