百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

VBA连接Mysql数据库 vba操作mysql

wptr33 2024-12-29 06:23 33 浏览

本篇文章分享VBA连接Mysql数据库的具体步骤。包含以下几个部分:


■MySQL的环境配置

■VBA连接MySQL数据库的代码框架



一、MySQL的环境配置


我的具体环境:

√Win7 32位系统

√Excel 2016 32bit

√Mysql服务+数据库管理工具(我用的Navicat)

√Mysql ODBC连接器

√VC++ 2015 Redistributable(一个必须环境)


切记!上述组件务必安装相同位数的版本,否则容易出现各种问题!


(所有文中涉及到的附件,32和64位版本均提供安装包,后台回复mysql获取)









▍确保以上程序均安装完成以后,开始下面的配置环境。


①打开“控制面板”-“管理工具”-“ODBC 数据源”(找不到管理工具的,搜索一下)

②添加Mysql数据源驱动



③点击完成后弹出配置界面,关于界面的说明如下:

我这里使用的是Navicat数据库管理软件,下面的界面也是Navicat里面连接设置页面。如果成功的话,点Test之后会出现连接成功的提醒。


到这一步,我们已经成功了一半了,下面只需要知道VBA连接Mysql的框架代码即可。



二、VBA中使用代码连接MySQL

现在给出连接Mysql数据库的框架代码


▍框架代码:

Sub 连接本地Mysql()
 '///1. 引用ADO类库:前期或者后期绑定
 Dim conn As ADODB.Connection
 Set conn = New ADODB.Connection '以上两句可简写Dim con As New ADODB.Connection
 Dim rs As ADODB.Recordset
 Set rs = New ADODB.Recordset '以上两句可简写Dim rs As New ADODB.Connection
 '///2. ADO建立对数据源的链接
 conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;Port=3306;DB=myemployees;UID=root;PWD=123;OPTION=3;"
 conn.Open
 '///3. ADO执行SQL语言。
 rs.Open "select * from jobs", conn '使用结果集对象执行sql语句
 Range("A2").CopyFromRecordset rs '将数据输出到工作表,不包含字段名
 '可简写con.Open "Driver={MySQL ODBC 8.0 Unicode Driver};Server=192.168.1.139;DB=test;UID=root;PWD=abc;OPTION=3;"
 MsgBox ("连接成功!" & vbCrLf & "数据库状态:" & conn.State & vbCrLf & "数据库版本:" & conn.Version)
 conn.Close
 Set conn = Nothing
End Sub




代码主要分为三大部分:

■引用ADO类库:前期或者后期绑定

■ADO建立对数据源的链接

■ADO执行SQL语言


???关于引用ADO类库:


连接数据库需要通过ado这个中间人。首先我们要引用ado组件的类型库,这里我采用前期绑定的方式。


在VBE菜单栏选择“工具”-“引用”,在弹出的引用窗口中,找到"Microsoft ActiveX Data Objects 6.1 Library"和"Microsoft ActiveX Data Objects Recordset 6.0Library",把前面的框勾选上,点击确定即可。(如果不是这两个版本,则选择一个版本号最高的勾选即可)


???ADO的连接字符串



 conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;Port=3306;DB=myemployees;UID=root;PWD=123;OPTION=3;"


Driver变量:值是必须要和数据源中添加的新数据源一致的,否则会提示找不到数据源。


Server变量:本地Mysql服务器,输入127.0.0.1,;远程服务器输入相应服务器IP地址。

Port变量:端口号

DB变量:数据库名字

UID变量:用户名

PWD变量:密码


???执行sql语句:


通常我们使用ADO的Execute语句Recordset对象执行SQL语句。


 将SQL查询结果和字段名写入表格指定区域
 Sql = "SELECT 姓名,成绩 FROM [Sheet1$] WHERE 成绩>=80"
 'Sql语句,查询Sheet1表成绩大于80……姓名和成绩的记录
 Set rst = cnn.Execute(Sql)
 'cnn.Execute()执行SQL语句,始终得到一个新的记录集rst
 For i = 0 To rst.Fields.Count - 1
 '利用fields属性获取所有字段名,fields包含了当前记录有关的所有字段,fields.count得到字段的数量
 '由于Fields.Count下标为0,又从0开始遍历,因此总数-1
 Cells(1, i + 4) = rst.Fields(i).Name
 Next
 Range("d2").CopyFromRecordset rst
 '使用单元格对象的CopyFromRecordset方法将rst内容复制到D2单元格为左上角的单元格区域



原创不易,如果你觉得不错,希望你能帮忙转发

相关推荐

oracle数据导入导出_oracle数据导入导出工具

关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...

继续学习Python中的while true/break语句

上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个else解...

python continue和break的区别_python中break语句和continue语句的区别

python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...

简单学Python——关键字6——break和continue

Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...

2-1,0基础学Python之 break退出循环、 continue继续循环 多重循

用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...

Python 中 break 和 continue 傻傻分不清

大家好啊,我是大田。今天分享一下break和continue在代码中的执行效果是什么,进一步区分出二者的区别。一、continue例1:当小明3岁时不打印年龄,其余年龄正常循环打印。可以看...

python中的流程控制语句:continue、break 和 return使用方法

Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...

L017:continue和break - 教程文案

continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...

作为前端开发者,你都经历过怎样的面试?

已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...

面试被问 const 是否不可变?这样回答才显功底

作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...

2023金九银十必看前端面试题!2w字精品!

导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。答案:CSS的盒模型是用于布局和定位元素的概念。它由内容区域...

前端面试总结_前端面试题整理

记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录由浅入深,66条JavaScript面试知识点(一)由浅入深,66...

2024前端面试真题之—VUE篇_前端面试题vue2020及答案

添加图片注释,不超过140字(可选)1.vue的生命周期有哪些及每个生命周期做了什么?beforeCreate是newVue()之后触发的第一个钩子,在当前阶段data、methods、com...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...