VBA使用ODBC Driver for SQLite读SQLite

如下图有这么一个SQlite数据库,我们要读取它

需要先安装ODBC,可以从这里下载:

SQLite 3 ODBC Driver :https://files-cdn.cnblogs.com/files/KMould/sqlite-3.5.7-odbc-0.65.rar

或者

SQLite 3 ODBC Driver :http://www.patthoyts.tk/sqlite3odbc.html

源码:

 1 Option Explicit
2
3 Sub test()
4
5 Dim con As ADODB.Connection
6 Dim rs As ADODB.Recordset
7
8 'Connection生成和连接字符串的设定
9 Set con = New ADODB.Connection
10 con.ConnectionString = "DRIVER=SQLite3 ODBC Driver;Database=Y:\.....\Test.db"
11
12 'sqlite连接
13 con.Open
14
15 'sql语句查询
16 Set rs = con.Execute("SELECT id,name FROM company;")
17
18
19 '把结果写入单元格
20 rs.MoveFirst
21 Dim i As Integer
22 i = 1
23 Do Until rs.EOF = True
24 Cells(i, 1).Value = rs.Fields(0).Value
25 Cells(i, 2).Value = rs.Fields(1).Value
26 rs.MoveNext
27 i = i + 1
28 Loop
29
30 '关闭数据库连接
31 con.Close
32 Set con = Nothing
33
34
35 End Sub

效果:

完全没问题。

如果把数据库表格“COMPANY”改为汉字“公司”,响应的我们需要修改源码如下图所示:

结果会有下面这个错误提示:

众所周知,SQLite中存储的数据为UTF-8编码格式的,所以我们需要把Unicode编码格式的SQL语句改为UTF-8格式的才可以,就像这样做:

如果数据路中有汉字,例如下图:

查询结果也会有乱码:

刚才我讲了,SQLite中存储的数据为UTF-8编码格式的。所以查询结果也要进行转换,,将UTF-8转为Unicode

更改后的效果:

所有源码,包含UnicodeToUTF8、UTF8ToUnicode都分享在这篇博客中,欢迎点击浏览:

https://www.cnblogs.com/KMould/p/14273522.html

参考资料:

http://blog.sina.com.cn/s/blog_4d281a030100q05r.html

http://www.cocoaliz.com/excelVBA/index/61/

httdps://zhuanlan.zhihu.com/p/336093667

最新文章

  1. 使用Runtime.getRuntime().exec()在java中调用python脚本
  2. Access数据库参数没值
  3. java遍历Map时remove删除元素
  4. mysql索引与优化
  5. iOS中的定时器 - NSTimer 使用方法
  6. swift 版本 UItableViewCell的动态高度补足
  7. 使用Horner法则计算多项式的值
  8. C++primer 9.49
  9. Raid0、Raid1、Raid0+1、Raid3和Raid5 几种磁盘阵列区别
  10. mysql安装及常见问题
  11. VC工程的.gitignore模板
  12. Vmware12安装centos系统详解
  13. SpringMVC url匹配却404,SimpleUrlHandlerMapping不起作用
  14. [人工智能] 安装python jupyter
  15. tomcat-四种运行模式和三种部署模式(优化)
  16. (转)Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding
  17. sql server递归日期
  18. python,使用PIL库对图片进行操作
  19. Debian 利用 iso 镜像完全离线更新 apt-cdrom
  20. 2018.09.30 bzoj2821: 作诗(Poetize)(分块)

热门文章

  1. Redis—简单动态字符串(SDS)
  2. 【.Net Core】分析.net core在linux下内存占用过高问题
  3. springboot使用jwt进行权限验证
  4. Ping命令浅析
  5. uboot1: 启动流程和移植框架
  6. 手把手教你部署验证freeswitch(避免踩坑)
  7. NABCD-name not found
  8. “深度评测官”——记2020BUAA软工软件案例分析作业
  9. Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
  10. Linux单设备多路USB串口的实现方法介绍