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