×

Excel VBA ADO SQL入门教程022:Connection对象的Execute方法

hqy hqy 发表于2023-03-09 16:12:10 浏览161 评论0

抢沙发发表评论

1.

诸君好,我们今天聊Connection对象的Execute方法;该方法可以向数据库提交查询,比如SQL语言,是我们系列教程中经常使用到的——其语法如下:
Connection.Execute CommandText,RecordsAffected, Options
第1个参数CommandText为字符串类型,是必须的,用来指定提交的查询,比如SQL语句。
第2个参数RecordsAffected是可选的输出参数,用来指定查询影响的行数。
第3个参数Options也是可选参数,用于指定命令类型和可能的CommandTypeEnum值的详细信息。
第2~3参数,作为新手我们基本用不到,所以就当没看到。
2.
Execute方法有两种使用形式。一种是Cnn.Execute SQL;另一种是Cnn.Execute(SQL)。
没错。两者看似一样,但以鲁迅他老人家两棵枣树般寂寞的情怀发誓,其实并不一样后者比前者多了一对括号……
当Execute执行的SQL语句是不需要返回记录集时,例如对数据库数据的删除、新增、更新等,Execute方法的参数,既可以加括号,也可以不加括号,比如:

Cnn.Execute 'delete from 成绩表 where 姓名='马可波罗''
也可以写成:

Cnn.Execute ('delete  from 成绩表 where 姓名='马可波罗'')
而当Execute指定的SQL语句是需要返回记录集,也就是SELECT查询语句时,由于VB语法规定带返回值的调用其参数必须加括号,因此就需要对SQL语句加上一对括号了。
……
举个例子:


















Sub DoExecute2()Dim cnn As Object, rst As ObjectDim i As Long, Sql As StringSet cnn = CreateObject('adodb.connection')cnn.Open 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=' & ThisWorkbook.FullName'创建到代码所在工作簿的连接,Excel版本非03版Sql = 'select * from [成绩表$]' 'Sql语句Set rst = cnn.Execute(Sql) 'Execute执行Sql语句Cells.ClearContentsFor i = 0 To rst.Fields.Count - 1'遍历获取记录集中的标题Cells(1, i + 1) = rst.Fields(i).NameNextRange('a2').CopyFromRecordset rst'获取记录集中的记录cnn.Close '关闭连接Set cnn = Nothing '释放内存End Sub
上面的代码Set rst = cnn.Execute(Sql),得到一个新的、只读属性的Recordset记录集,该记录集由标题和记录行两部分构成;我们通过遍历循环的方式,将该记录集的标题名(Fields.Name)依次放置到表格的第1行;并使用单元格的CopyFromRecordset方法,将查询记录放置到右上角为A2单元格的区域内。
当然,如果我们并不需要获取标题之类的信息,只是需要获取查询记录,也可以不使用rst对象,代码会相当简洁。


打赏

本文链接:https://www.kinber.cn/post/3719.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客