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

【SQLite】教程09-VBA读取SQLite数据之ODBC,及中文乱码问题的更多相关文章

  1. ios 向sqlite数据库插入和读取图片数据

    向sqlite数据库插入和读取图片数据 (for ios) 假定数据库中存在表 test_table(name,image), 下面代码将图片文件test.png的二进制数据写到sqlite数据库: ...

  2. Transfer-Encoding:chunked 返回数据过长导致中文乱码

    最近在写一个项目的后台时,前端请求指定资源后,返回JSON格式的数据,突然发现在返回的字节数过大时,最后的message中文数据乱码了,对于同一个接口的请求:当数据小时不会乱码,当数据量大了中文就乱码 ...

  3. 使用Kettle抽取数据时,出现中文乱码问题解决方案

    使用Kettle在不同的数据库抽取数据时,有时会出现中文乱码问题:其解决方案如下: 1.查看数据库的字符集是否是UTF-8(最常用的字符集) 2.如果数据库设置正确仍然存在中文乱码,则可能是因为有的客 ...

  4. 关于使用Ajax请求json数据,@RequestMapping返回中文乱码的几种解决办法

    一.问题描述: 使用ajax请求json数据的时候,无论如何返回的响应编码都是ISO-8859-1类型,因为统一都是utf-8编码,导致出现返回结果中文乱码情况. $.ajax({ type:&quo ...

  5. 关于hibernate插入数据到mysql数据库中文乱码问题的解决

    要想解决这个问题就要找到问题的症结所在 1.首先将数据提交到action输出看action里的数据是不是中文乱码,结果很遗憾并不是这里的问题 2.设置数据库连接url: 3.打开mysql安装文件里的 ...

  6. 前台get传递含中文数据到后台出现中文乱码

    博客:(前后台文件编码相同)前台传后台中文乱码 4月4日补充 jsp页面第一句没有下面一句或者页面发布后查看源代码时第一句已经不在了 <%@ page language="java&q ...

  7. JMeter_响应数据为空以及中文乱码

    一.响应数据为空 最近做测试接口,使用同样的请求方式.地址.参数和header,在postman中能正常响应,接收数据的也正常,但是在Jmeter中,虽然响应正常,但是响应数据却为空! Jmeter接 ...

  8. Diagramming for WinForms 教程一(读取图元数据)

    1,新建“Visual c#” Windows窗体应用程序. 2,从“工具箱”的“Diagramming”选项卡下,托出“DiagramView”控件到Form1上.控件的"Name&quo ...

  9. Java处理ZIP文件的解决方案——Zip4J(不解压直接通过InputStream形式读取其中的文件,解决中文乱码)

    一.JDK内置操作Zip文件其实,在JDK中已经存在操作ZIP的工具类:ZipInputStream. 基本使用: public static Map<String, String> re ...

  10. FusionCharts制作报表使用XML导入数据时出现的中文乱码问题

    今天在使用FusionCharts制作报表时用XML导入数据,总是出现乱码问题,下面是我的解决方案. 让FusionCharts支持中文 刚刚将XML导入到html中后,在火狐浏览器一直报Invali ...

随机推荐

  1. Android 面试必备 - 系统、App、Activity 启动过程“一锅端”

    Android 系统启动过程 从系统层看: linux 系统层 Android系统服务层 Zygote 从开机启动到Home Launcher: 启动bootloader (小程序:初始化硬件) 加载 ...

  2. QQ可以登录,网页无法访问

    之前以为是网络的问题,但是,后来发现QQ却可以登录,这是第二次碰到这个情况,所以总结一下 一般我们电脑上都会安装一个杀毒软件,比如火绒等等.我电脑上用的联想自带的电脑管家 我们可以在工具箱中找到网络诊 ...

  3. spring和mybatis整合时Access denied for user '***'@'localhost' (using password: YES)错误的解决方案

    参考文章:博客园文章 参考解决办法: 将数据库配置文件格式 key=value 改为 jdbc.key=value 以下为问题分析 使用Spring + Mybatis + Mysql整合时,测试报错 ...

  4. Yii2访问gii模块403

    出现问题 访问Yii2的gii模块没有权限,403 找到原因 在Yii2-gii源码文件中(vendor/yiisoft/yii2-gii/src/Module.php)可以看到有一个配置项$allo ...

  5. PHP基础-PHP中的函数声明

    /* PHP的变量的范围* 局部变量: 在函数中声明的变量就是局部变量,只能在自己的函数内部使用.* 全局变量: 在函数外声明,在变量声明以后的,直到整个脚本结束前都可以使用,包括在函数中和{}中都可 ...

  6. $ git push -u origin master 报错

    输入$ git push -u origin master报permission denied(publickey) 如下: 原因是没有与gitee上的账号成功建立密钥对,所以需要配对密钥 解决方法( ...

  7. 类的两个装饰器classmethod、staticethod和内置魔术方法

    一.两个装饰器@classmethod.@staticmethod @classmethod:把类中的绑定方法变成一个类方法,cls 就等于类名 有什么用? 1.在方法中任然可以引用类中的静态变量 2 ...

  8. 3D高清电商购物小图标图片_在线商城三维icon图标素材大全

    3D高清电商购物小图标图片_在线商城三维icon图标素材大全

  9. 论文笔记:RankIQA

    0.Abstract 本文提出了一种从排名中学习的无参考图像质量评估方法(RankIQA).为了解决IQA数据集大小有限的问题,本文训练了一个孪生网络,通过使用合成的已知相对图像质量排名的数据集来训练 ...

  10. pytorch实现LeNet5分类CIFAR10

    关于LeNet-5 LeNet5的Pytorch实现在网络上已经有很多了,这里记录一下自己的实现方法. LeNet-5出自于Gradient-Based Learning Applied to Doc ...