诸君好,我们今天聊Connection对象的Execute方法;该方法可以向数据库提交查询,比如SQL语言,是我们系列教程中经常使用到的——其语法如下:Connection.Execute CommandText,RecordsAffected, Options第1个参数CommandText为字符串类型,是必须的,用来指定提交的查询,比如SQL语句。第2个参数RecordsAffected是可选的输出参数,用来指定查询影响的行数。第3个参数Options也是可选参数,用于指定命令类型和可能的CommandTypeEnum值的详细信息。第2~3参数,作为新手我们基本用不到,所以就当没看到。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 Object
Dim i As Long, Sql As String
Set 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.ClearContents
For i = 0 To rst.Fields.Count - 1
'遍历获取记录集中的标题
Cells(1, i + 1) = rst.Fields(i).Name
Next
Range('a2').CopyFromRecordset rst
'获取记录集中的记录
cnn.Close '关闭连接
Set cnn = Nothing '释放内存
End Sub
上面的代码Set rst = cnn.Execute(Sql),得到一个新的、只读属性的Recordset记录集,该记录集由标题和记录行两部分构成;我们通过遍历循环的方式,将该记录集的标题名(Fields.Name)依次放置到表格的第1行;并使用单元格的CopyFromRecordset方法,将查询记录放置到右上角为A2单元格的区域内。当然,如果我们并不需要获取标题之类的信息,只是需要获取查询记录,也可以不使用rst对象,代码会相当简洁。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/3719.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
打赏微信支付宝扫一扫,打赏作者吧~
休息一下~~