博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决网站使用sqlite时并发问题的一个经验
阅读量:6463 次
发布时间:2019-06-23

本文共 1065 字,大约阅读时间需要 3 分钟。

前几天在CSDN上看到有人使用sqlite+tomcat实现一个web应用,并发操作引起数据库锁定,在发帖求助。这才想起自己以前做的一个web应用也有相同问题,顺便把自己解决方法写下来,供大家参考。

当时我的应用是给单位做一个月度工作计划的上报并生成WORD文件供排版、打印。考虑到数据量不大,没有现成数据库系统可用,并且当时自己已经为sqlite写了一个很好的辅助系统(当时叫SqliteHelper,就是现在xqk.data数据框架的原始版本,呵呵),就决定用sqlite数据库+asp.net来实现。

应用实现起来很简单,但是在上线试运行时,发现经常出项sqlite被锁定,不能读写的错误。也就是CSDN网友提到的并发问题。经过检查,发现问题出DbConnecting上。

在这个应用中,我是在每个aspx页面的Page_Load里打开sqlite数据库,等相关操作完成后再关闭。大概的代码是:
void Page_Load(Object sender,EventArgs e)
{
    DbConnector db = SqliteHelper.Connector(Application["dbfile"]);
    Plans[] plans = db.SelectAll();
    ......
}
这个问题解决的过程记得不是很清楚了,但是最终的解决方法是:
先在Application_Start的时候把数据库打开
void Application_Start(Object sender,EventArgs e)
{
    DbConnector db = SqliteHelper.Connector(Application["dbfile"]);
    Application["db"] = db;
}
然后在Page_load里直接使用这个db:
void Page_Load(Object sender,EventArgs e)
{
    DbConnector db =(DbConnector)Application["db"]);
    Plans[] plans = db.SelectAll();
    ......
}
哈哈,就这样解决的。

================================

看了杨仔的评论,并且看了sqlite官网上的文章发现原有分析有错,特此删除。谢谢沉默杨仔。

 

转载于:https://www.cnblogs.com/xqkblog/archive/2011/11/08/2240557.html

你可能感兴趣的文章
java单例模式深度解析
查看>>
什么是堆、栈?
查看>>
记录一次axios的封装
查看>>
【学习笔记】阿里云Centos7.4下配置Nginx
查看>>
VuePress手把手一小時快速踩坑
查看>>
dnsmasq安装使用和体验
查看>>
学习constructor和instanceof的区别
查看>>
用docker容器来制作nginx镜像
查看>>
关于分布式系统
查看>>
枚举类
查看>>
封装之--JAVA中的访问修饰符(区别于.NET)
查看>>
PyQt5综合实践—TCP服务器
查看>>
斐波那契数列 Java 不同的实现方法所需要的时间比较
查看>>
命令行git的使用
查看>>
php的正则表达式完全手册
查看>>
Java的自动装箱和拆箱
查看>>
Appium环境准备(二)
查看>>
1111
查看>>
面试!你准备了吗?
查看>>
如何在 GitHub 建立个人主页和项目演示页面
查看>>