设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

VB或Access如何使用Sqlite数据库的心得集锦

2015-5-18 11:31| 发布者: admin| 查看: 4443| 评论: 5|原作者: tmtony|来自: www.office-cn.net

摘要: 最近因客户需要,要用到Sqlite数据库,前端工具使用VB或Access, 在使用过程中遇到一些问题,(特别感谢 席主习_smileyoufu 帮助)通过网友帮助和网上搜索,将一些解决心得写下来,希望对Sqlite入门者有所帮助和启动 ...
最近因客户需要,要用到Sqlite数据库,前端工具使用VB或Access, 在使用过程中遇到一些问题,(特别感谢 席主习_smileyoufu 帮助)通过网友帮助和网上搜索,将一些解决心得写下来,希望对Sqlite入门者有所帮助和启动
1.VB或Access 要直接使用Sqlite数据库,需要安装一个Sqlite litex的版本,才能正常注册sqlite3.dll
    但实际我在注册中,在一些电脑注册会出现使用问题,网友如果测试成功,请跟贴
    sqlite lites使用说明及下载地址: http://blog.sina.com.cn/s/blog_48e2ea3401018fiz.html
2.可使用 sqliteforexcel 解决方案,里面封装了一个dll  ,下载地址: http://sqliteforexcel.codeplex.com/
    SQLite3_StdCall.dll
    SQLiteForExcel.xls  
    SQLiteForExcel_64.xlsm
    SQLiteForWord.doc
    里面也包含
  • SQLite3_StdCall is a small and very simple C .dll that makes it possible to use the standard SQLite3 .dll from VBA. It just passes calls from VBA on to SQLite without any change in the parameters, but this allows the StdCall calling convention that VB6 and VBA is limited to.
  • Sqlite3.bas VBA module has all the VBA Declares, and does the parameter and string conversions. It exposes a number of SQLite3xxxx functions. These map as directly as possible to the SQLite C API, with no change in the semantics. Although I have not exposed the whole API, most of the core interface is included, in particular the prepared statement, binding, retrieval and backup functions. Date values are stored as Julian day real numbers in the database.
  • Sqlite3Demo.bas VBA module has tests that serve as nice examples of how to use the SQLite3xxxx functions.
  • SQLite3Demo.xls contains the two VBA modules.
  • 64-bit support for use with the 64-bit versions of Excel can be found in SQLiteForExcel_64.xlsm which has VBA code that supports both 32-bit and 64-bit versions of Excel. A 64-bit build of SQLite 3.7.13 is located in x64\SQLite3.dll. The corresponding Sqlite3Demo_64.bas module shows how to target both 32-bit and 64-bit Excel with the same VBA code (some #Ifs are required). (Note that the default install of Office is always the 32-bit version, even on a 64-bit version of Windows. Only if the 64-bit version of Office has been specifically selected will the 64-bit modules be required.)

      缺点:是没有创建新数据库的方法,使用接口 与ado 不太兼容,语法不相同。迁移成本有点高

3. 第三种解决方案,也是   席主习_smileyoufu 提供方案,使用vbRichClient5.dll    vb_cairo_sqlite.dll   DirectCOM.dll
     可实现免注册使用sqlite数据库,且因为 vbRichClient5 的封装,使用Sqlite数据库几乎 没有太大的差异。
     且Sqlite的数据库在一些性能性,特别的内存数据库,速度非常的快。对一些单机软件非常适合
     使用方法,从 http://www.vbrichclient.com/ 官方下载
     vbRichClient5.dll    vb_cairo_sqlite.dll   DirectCOM.dll
     即可
     唯一缺点是发布时需要带着  vbRichClient5.dll 库(注册或免注册方式)
     vb_cairo_sqlite.dll (原生DLL,不需要注册)   DirectCOM.dll
     且 vb_cairo_sqlite.dll   vbRichClient5.dll 必须保持在同一个目录即可

相关链接:
Access数据库与Sqlite数据库性能对比测试
http://www.office-cn.net/thread-119912-1-1.html

发表评论

最新评论

引用 zpy2 2015-5-18 04:35
谢谢分享
引用 ganlinlao 2015-5-18 11:48
王站,什么时候转向了?{:soso_e114:}

VB6使用SQLite的选项不多,而且或多或少有这样那样的问题。

1、litexSQlite,这是早期的比较牛的sqlite的com封装。它牛到很多人想试图修改它的源码,但没有一个能成功的。可见作者的c++功力是非常深厚的。
2、VBA版本的,确实让人怎么用,怎么不习惯。这里面一个重要的原因是:大多数使用vba的人,如果不使用recordset,都不知道怎么使用数据库里的数据。可以说recordset快等同于数据库了。
3、sqlite有oledb的驱动程序,这不是官方的,但它有一个糟糕的问题,必须注册,虽然它是免费使用,但使用者必须注册。这一点太糟糕了,糟糕到好象蛋蛋被人捏着一样的疼。
4、vbrichclient5。它的使用是没有问题,问题在于如果你只用sqlite的话,那它的库显得有点庞大了一点,因为你不用它的其它功能,所以这样的库,就是一个胖客户端。我也是建议大家使用vbrichclient5。
5、其实我很早就知道vbrichclient的作者,那时候,他根本就还没写vbrichclient。那时,我也不知道他居然有这么大的雄心,会搞成这么大的框架。我在这里犹豫着要不要说,其实不用vbrichclient5,还可以使用更加小巧的适用vb使用的SQlite。总共才500多K,而不是现在的5、6M这么大。只不过因为它已不再被维护了,而且不是开源的,即使有问题,你也无从解决起。
如果我才这么犹豫着。




引用 tmtony 2015-5-18 11:53
冬瓜汤,原来你对Sqlite也有研究啊。
那个500K  的是什么DLL,使用方式是否像cRecordset一样方便?
我现在是使用vbRichClient5.dll 使用还是比较方便,就是有点大,且免注册方式在有些客户电脑出关闭程序时出错。
我主要是解决一个客户的问题。他要求用这个。一般开发,我还是倾向于Access
引用 风中漫步 2015-5-18 13:20
本帖最后由 风中漫步 于 2015-5-18 13:23 编辑

{:soso_e121:}不好意思啊,站长.能说说您开发的这个库用在哪方面吗?昨天没好意思问,如果不方便就别回了.
引用 tmtony 2015-5-18 13:30
1. 如果数据库没有修改,数据库文件的日期不能改变
2. 大量需要不断频繁读取服务器数据库但数据并没有经常更新的场景,如单据中选择产品资料,展示BOM等
3. 其它对数据速度有较高要求的

查看全部评论(5)

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-19 05:37 , Processed in 0.090183 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部