zoukankan      html  css  js  c++  java
  • 【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

      

  • 相关阅读:
    4月24日 PHP基础
    4月22日 常用函数
    4月22日 练习题
    PHP正则数组
    PHP基础函数应用
    数据库SQL语句
    高级查询
    mysql
    CSS样式表
    词汇
  • 原文地址:https://www.cnblogs.com/KMould/p/13445241.html
Copyright © 2011-2022 走看看