关于SQLite3 Database is Locked 的一点处理技巧
2014-12-02 15:07
986 查看
关于SQLite Database is Locked 的一点处理技巧
第一次玩SQLite,并且深深的喜欢上了它的小巧,便捷,灵活……好吧说主题,由于SQLite 过于简单,所以它的并发性确实让人抓狂,今天就碰到了,并且无所适从,因为刚开始觉得,我要操作同一数据库中的多个表,并且在不同的地方,所以感觉见多个数据库链接很正常,所以就做了,然后就是Database is Locked。(发现这个问题实在VS下调试时报的)。并且我一边用数据库管理工具操作,一边在写C#代码处理数据库,也包同样的错误,所以……
也就是这样:
//同时有两个数据库链接,此时分别对同一个数据库操作时就会出现这个问题 SQLiteConnection conn1; SQLiteConnection conn2;
最后想到了一种方法,将数据库链接变量设为:static。
想法来自 设计模式,这是一门睡得天晕地暗的课,20多种设计模式吧(不知道这个数据记得对不对),就会这一个,单件,单件是什么,自己读娘或者看《大话设计模式》这本书吧。
具体就是,将数据库链接变量(以后都用conn)设为static即可。
C#代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SQLite;//应如的数据库驱动,去官网下,
//注意.net,vs,SQLite,windows位数这些东西,当时搞死我了
namespace ConsoleApplication1
{
class SQLite
{
string connectString;
static SQLiteConnection conn;
static bool isopen=false;//同样是Static,标记数据库是否已经打开
public SQLite()
{
if (!isopen)
{
connectString = @"Data Source=E:\inf.db;Pooling=true;FailIfMissing=false";
conn = new SQLiteConnection(connectString);
conn.Open();
isopen = true;
}
}
public SQLiteConnection getConn()//通过这个函数得到数据库链接变量
{
return conn;
}
}
}
//此时这让做如下操作,就没有任何问题了
SQLite sql=new SQLite();
SQLiteConnection conn1=sql.getConn();
SQLiteConnection conn2=sql.getConn();
相关文章推荐
- SQLite并发操作下的分析与处理,解决database is locked,以及多线程下执行事务等问题
- SQLite指南(6)-处理database is locked的方法
- 关于sqlite中的一个错误 “database is locked"
- ios sqlite database is locked
- SQLiite + Nhibernate error: Finisar.SQLite.SQLiteException: database is locked
- 解决SQLite中的 database is locked
- Android SQLiteDatabaseLockedException: database is locked
- android.database.sqlite.SQLiteException: database is locked
- database is locked和SQLITE_BUSY
- 解决django的sqlite3的database is locked
- sqlite报SQLITE_LOCKED "Database table is locked"
- 关于系统出现the database file is locked错误的说明
- sqlite遇到database is locked问题的完美解决
- sqlite遇到database is locked问题的完美解决
- SQLite出现database disk image is malformed(11)的处理
- sqlite遇到database is locked问题的完美解决
- sqlite遇到database is locked问题的完美解决
- 解决SQLite database is locked
- sqlite:多线程操作数据库“database is locked”解决方法(二)
- sqlite:多线程操作数据库“database is locked”解决方法