【SQLite】教程09-VBA读取SQLite数据之ODBC,及中文乱码问题
2024-08-27 02:29:55
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
最新文章
- 使用Runtime.getRuntime().exec()在java中调用python脚本
- Access数据库参数没值
- java遍历Map时remove删除元素
- mysql索引与优化
- iOS中的定时器 - NSTimer 使用方法
- swift 版本 UItableViewCell的动态高度补足
- 使用Horner法则计算多项式的值
- C++primer 9.49
- Raid0、Raid1、Raid0+1、Raid3和Raid5 几种磁盘阵列区别
- mysql安装及常见问题
- VC工程的.gitignore模板
- Vmware12安装centos系统详解
- SpringMVC url匹配却404,SimpleUrlHandlerMapping不起作用
- [人工智能] 安装python jupyter
- tomcat-四种运行模式和三种部署模式(优化)
- (转)Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding
- sql server递归日期
- python,使用PIL库对图片进行操作
- Debian 利用 iso 镜像完全离线更新 apt-cdrom
- 2018.09.30 bzoj2821: 作诗(Poetize)(分块)
热门文章
- Redis—简单动态字符串(SDS)
- 【.Net Core】分析.net core在linux下内存占用过高问题
- springboot使用jwt进行权限验证
- Ping命令浅析
- uboot1: 启动流程和移植框架
- 手把手教你部署验证freeswitch(避免踩坑)
- NABCD-name not found
- “深度评测官”——记2020BUAA软工软件案例分析作业
- Exception in thread ";main"; java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
- Linux单设备多路USB串口的实现方法介绍