09
2023
03
16:12:10

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

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对象,代码会相当简洁。




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

image.png

本文链接:https://hqyman.cn/post/3719.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: