【SQLite】教程09-VBA读取SQLite数据之ODBC,及中文乱码问题

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

  

原文地址:https://www.cnblogs.com/KMould/p/13445241.html