Excel VBa 连接Oracle数据库
需求:使用Excel做一个简单的数据库连接工具(类似于java中的AWT和SWING)。
- 可以查询数据库的表
- 查询各个表内的数据
- 插入/修改各个表的数据
步骤:
- 先建立一个UserForm作为主界面,并放置按钮,如下图所示。
然后双击中间的“连接数据库”按钮,进行代码编辑。
Private Sub CommandButton1_Click()Dim strConn As String Dim dbConn As ObjectDim resSet As ObjectDim db_sid, db_user, db_pass As Stringdb_sid = "edu-server.yds.yd:1521/orcl.yds.yd"db_user = "root"db_pass = "123456"Set dbConn = CreateObject("ADODB.Connection")Set resSet = CreateObject("ADODB.Recordset")strConn = "Provider=OraOLEDB.Oracle.1; user id=" & db_user & "; password=" & db_pass & "; data source = " & db_sid & "; Persist Security Info=True"//清空sheet1 Sheets("Sheet1").Range("1:65536").ClearContentsdbConn.Open strConn//查询当前数据库所有表名Set resSet = dbConn.Execute("select table_name from user_tables")//将表名放入sheet1中For j = 0 To resSet.Fields.Count - 1Cells(1, j + 1) = resSet.Fields(j).NameNext//将Sheet1中的A2:A20(A20写成了固定的,也可以写成变量)放到主界面中,下面是主界面UserForm2.ListBox1.RowSource = "Sheet1!A2:A20"Range("A2").CopyFromRecordset resSet//跳转到主界面UserForm2.Show 0//隐藏当前界面UserForm1.HidedbConn.CloseEnd Sub
- 使用UserForm创建一个主界面,并放入一些控件,如下图。
左侧空白部分是一个ListBox,点击步骤1界面的“连接数据库”按钮后,跳转到当前步骤的界面,并将表明显示到左侧的ListBox中,效果图如下。
双击“查询”按钮,进入到查询功能编写。
Private Sub CommandButton1_Click()Dim strConn As StringDim strSql As StringDim iCount As IntegerDim whm As WorksheetDim dbConn As ObjectDim resSet As ObjectDim db_sid, db_user, db_pass As Stringdb_sid = "edu-server.yds.yd:1521/orcl.yds.yd"db_user = "root"db_pass = "123456"Set dbConn = CreateObject("ADODB.Connection")Set resSet = CreateObject("ADODB.Recordset")strConn = "Provider=OraOLEDB.Oracle.1; user id=" & db_user & "; password=" & db_pass & "; data source = " & db_sid & "; Persist Security Info=True"//根据鼠标选中的表名拼接sqlstrSql = "select * from " & ListBox1.Value//判断sheet2是否存在If ActiveSheet.Name = "Sheet2" Then//存在就清空sheet2Sheets("Sheet2").Range("1:65536").ClearContentsElse//不存在就创建sheet2Worksheets.Add.Name = "Sheet2"End IfdbConn.Open strConn//执行sqlSet resSet = dbConn.Execute(strSql)//将查询到的数据放入sheet2中For j = 0 To resSet.Fields.Count - 1Cells(1, j + 1) = resSet.Fields(j).NameNextRange("A2").CopyFromRecordset resSetdbConn.CloseEnd Sub
效果图如下。
3.双击“更新”按钮,进入更新功能代码编写。
这里我的想法是将插入和修改放到了一起,点击“更新”按钮会后,先清空当前表
,再将sheet2中的数据全部插入到表中,这样就将插入和修改整合到了一起,但是效率可能会低.
Private Sub CommandButton2_Click()Dim strConn1 As StringDim truncateSql As StringDim insertSql As StringDim dbConn1 As ObjectDim resSet1 As ObjectDim maxRow As IntegerDim maxColumn As IntegerDim db_sid1, db_user1, db_pass1 As Stringdb_sid1 = "edu-server.yds.yd:1521/orcl.yds.yd"db_user1 = "root"db_pass1 = "123456"Set dbConn1 = CreateObject("ADODB.Connection")Set resSet1 = CreateObject("ADODB.Recordset")//获取最大行数maxRow = ActiveSheet.[A65536].End(xlUp).Row//获取最大列数maxColumn = ActiveSheet.[IV1].End(xlToLeft).ColumnstrConn1 = "Provider=OraOLEDB.Oracle.1; user id=" & db_user1 & "; password=" & db_pass1 & "; data source = " & db_sid1 & "; Persist Security Info=True"//拼接清空表sqltruncateSql = "truncate table " & ListBox1.Value//拼接插入sqlinsertSql = "insert into " & ListBox1.Value & " values( "dbConn1.Open strConn1Set resSet1 = dbConn1.Execute(truncateSql)//循环,第一行是表字段名,从第二行开始,j=2For j = 2 To maxRow//取每一行所有有效列的值,拼到插入语句的sql中For i = 1 To maxColumnIf i = maxColumn TheninsertSql = insertSql & "'" & Cells(j, i) & "')"ElseinsertSql = insertSql & "'" & Cells(j, i) & "',"End IfNext//拼完插入语句的sql,就执行Set resSet1 = dbConn1.Execute(insertSql)//将sql重置成最初状态,以便下一行的拼接insertSql = "insert into " & ListBox1.Value & " values( "Next//增删改需要提交事务,这里我不清楚需不需要,写上肯定没错Set resSet1 = dbConn1.Execute("commit")//弹出提示框,提示更新成功!MsgBox prompt:=" 更新成功! "dbConn1.CloseEnd Sub
效果图如下。
- 最后一步,在sheet1的ThisWorkBook中写入显示步骤1的连接界面代码。
至此,简单数据库连接功能都已完成,有需要的可以添加,我这个每次执行sql都需要连接数据库,关闭连接,没有优化,可以自行修改。
第一次使用的话需要将sheet2删除!不删可能会报错。
例子放入在了百度网盘,有需要的自取。
链接: https://pan.baidu.com/s/1tCix95JM17FMttFO4sTGMg 提取码: adxf 复制这段内容后打开百度网盘手机App,操作更方便哦
感谢阅读!
Excel VBa 连接Oracle数据库相关推荐
- Excel VBA连接ORACLE数据库
'装好oracle客户端,不需引用直接粘贴下列格式运行 Sub connect() Dim strconnt As String Set connt = New ADODB.Connection Di ...
- VBA 连接Oracle 数据库
Sub?linkOracle()?? ?? ????Dim?strConn?As?String??'连接字符串?? ?????? ????Dim?dbConn?As?Object??'连接对象?? ? ...
- oracle vba 数组_Excel VBA 连接各种数据库(二) VBA连接Oracle数据库
(2019.08.02更新)本文内容在Windows10 企业版64bit下测试通过 本文主要内容: Oracle环境配置 ODBC驱动设置.第三方驱动下载 VBA连接Oracle连接方法 Oracl ...
- Excel VBA 链接 Oracle数据库
标题 前言 准备 第一步 远程数据库的准备 第二步 本地免安装客户端下载 1.下载基本包 1.1 包下载地址 1.2 网盘下载地址 2.配置oracle 网络文件 2.1tnsnames.ora 文件 ...
- vba mysql 3706_EXCEL中VBA连接oracle数据库字符串“运行出现3706错误”
我在EXCEL中VBA连接oracle串如下 Conn.ConnectionString = "provider=oraoledb.oracle.1;password=******;user ...
- quicksearch连接oracle,dos命令下连接oracle数据库表
Oracle表空间文件损坏后的排查及解决 版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/zergskj/article/details/6303417 ...
- ExcelToOracle:批量导入Excel文件到Oracle数据库的自动化工具
ExcelToOracle:批量导入Excel文件到Oracle数据库的自动化工具 简介 ExcelToOracle 是一个可以批量导入excel到数据库(mysql/oracle/sqlserver ...
- 64位系统office Excel 2007导入oracle数据库出错问题解决
关于64位系统安装office Excel 2007导入oracle数据库出错问题解决 问题描述:在Excel导入数据库的操作过程中,由于公司人员一直使用的是XP和32位的系统,oracle数据库对X ...
- 连接oracle的驱动包,连接oracle数据库驱动包
JDBC与JAVA数据库编程 一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. ...
- mysql外部表不是预期格式_批量Excel数据导入Oracle数据库 导入excel错误:外部表不是预期的格式 解决方案...
在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一下,导出的Excel是标准文件不是html,没错 ...
最新文章
- Keystone创建服务实体报错HTTP401和HTTP500
- 详细讲解 移植Uboot到ARMer9开发系统上
- [导入]JavaScript 滚动特效代码
- Linux Kernel5.10的软中断(softirq)的本质
- Shiro 编码/加密
- SAP Spartacus Accessibility E2E 端到端测试
- mysql数据库的安装和配置文件_MySQL 数据库安装与配置详解
- git仓库的推送问题
- opacity:0.99;
- 遍历二叉树的基本思路
- win11配置mysql环境变量保姆级教程
- Simphony学习2 安全相关(密码和角色)
- echarts(雷达图和中国地图)
- composer require fxp/composer-asset-plugin 失败
- kettle 学习笔记
- 【MATLAB数字图像处理】伪彩色增强
- 服务器虚拟化专用ovf模板,开放虚拟化格式(OVF)
- (干货)备战2021年软考中级网络工程师-04知识产权与标准化
- Object-Oriented Programming Summary Ⅲ
- 大数据集群Linux环境配置