问道1.61跑线时出现 Pack sqlitedatabasee of sqlite: /dba/log/log_dba_daili.sql.

SQLite数据库作为一般单机版软件的数據库是非常优秀的,我目前单机版的软件产品线基本上全部替换Access作为优选的数据库了在开发过程中,有时候需要批量写入数据的情况发现传统的插入数据模式非常慢,几千条数据的写入或者更新可能需要好几分钟时间而SqlServer则相同的操作可能几秒即可,有无更好的方法來提高它的响应速度呢***是有的,就是采用事务提交默认SQLite的数据库插入操作,如果没有采用事务的话它每次写入提交,就会触发┅次事务操作而这样几千条的数据,就会触发几千个事务的操作这就是时间耗费的根源。本文通过详细代码介绍如何使用事务来提高整个批量插入数据的速度并以实际的Winform开发框架中的字典管理模块的批量插入功能来进行介绍,通过前后速度的对比使得事务操作提高響应速度更有说服力。

为了提高响应速度我这里使用了事务操作,整个事务操作是基于EnterpriseLibray类库的数据库操作由于我已经在框架的基类中莋了封装,因此我们这里看到整个处理过程即可

其中MyRegion里面的代码就是遍历每行的数据,构造数据字典对象和排序号然后调用InsertDictData函数进行數据的录入。其中InsertDictData函数的代码是

整个插入功能按钮的处理全部代码如下所示

上面的批量插入,经过前后的测试2千条数据批量插入SQLite数据庫,需要大概3~4分钟左右如果采用了事务操作,则在1~2秒内写入完成速度提高不知道多少倍。如果是操作数据比较多的强烈建议使用事務进行操作,可以给客户很好的体验效果

如果嫌上面的代码复杂,可以看下面的讲解代码可能就明白了

上面是一种比较简单原始的事务操作如果批量插入数据,同样能够起到一样的效果

参考资料

 

随机推荐