引言
书接上回,接着讲VBA与SQL server的交互
本篇主要内容包括VBA执行存储过程,以及VBA与SQL server交互的一些技术细节
偏技术的会放在文章的最后,不感兴趣的可以直接跳过
正文
我们上回用VBA从SQL server中获取了一些数据,现在让我们来使用VBA传递数据给SQL server
代码和上回几乎一样,我们就来简单的复习一下
首先要创建连接以及数据集:
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
然后呢打开连接,执行insert语句:
conn.ConnectionString = "Provider=SQLOLEDB;Server=127.0.0.1;Database=Test;Uid=sa;Pwd=123456789"
conn.Open
Dim sql_text As String
sql_text = "insert into [Test].[dbo].[test] values('fakecountry',111,111,222)"
rs.Open sql_text, conn
最后关闭连接释放资源:
Set rs = Nothing
conn.Close
Set conn = Nothing
就这么简单,我们就传递了一行数据到数据库test表中
但在实际的生产环境中,情况要复杂很多
首先,实际工作中我们可能没有这么大的数据库权限,会允许我们随意增改删查数据库中的表
一般可能开放视图或者某些存储过程的权限
所以呢接下来让我们看看怎么通过VBA执行存储过程,来达到数据抽取和数据批量存入的目的
先来看怎么用存储过程来从数据库获取数据
我的test库中有这样一个存储过程:
非常简单的一个存储过程,功能是通过入参(国家名)来获取整行数据
我们只需要在上次的代码基础上做略微的修改即可:
Sub test()
Dim conn As ADODB.Connection
Set conn = New ADODB.C