在VBA中写SQL语句的注意事项

最近使用VBA连接MySQL数据库比较多,总结出一些书写方面的注意事项,分享出来,希望能给大家一些提示,同时也给自己做个备忘。

1、单引号/双引号

在标准SQL语句中,字符串使用的是单引号,但是MySQL中,单引号和双引号都适用,平时使用时也未明确区分,有时候单,有时候双,但是在VBA中写SQL语句时,一定要使用单引号,否则报错(VBA中字符串使用双引号,如果都用双引号,别说人了,系统都分不清了)。

2、反引号

在MySQL中,反引号``代表其中的内容是数据库名、表名、字段名等,可省略,但是在VBA中写SQL语句时,一定要加上反引号,否则程序无法解析。

3、行数问题

SQL语句中没有行数限制的要求,实际上,在SQL中,鼓励通过换行和缩进来使语句结构更加清晰易读,特别是涉及子查询或连接的时候,一条SQL语句可能会换很多行。

但是在VBA中,一条语句如果超过25行(使用超过 24 个换行符),将无法继续书写,这时候可以考虑拆分为多个语句单独执行。

4、执行多条语句

有时候我们希望执行多条SQL语句,然后仅将最后一条的执行结果返回,此时涉及SQL语句的两种写法。

(1)执行单条语句,并将结果返回,如下:

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset

Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset

conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;DB=test;UID=root;PWD=******;OPTION=3;"    '配置连接串
conn.Open

rs.Open "SELECT * FROM `demo`", conn
mysheet.Range("A1")..CopyFromRecordset rs

rs.Close
Set rs = Nothing
    
conn.Close
Set conn = Nothing

(2)执行单条/多条语句,并将结果返回,如下:

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL1, strSQL2, strSQL3 As String

Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset

conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;DB=test;UID=root;PWD=******;OPTION=3;"    '配置连接串
conn.Open

strSQL1 = "DROP TABLE IF EXISTS `demo2`"
strSQL2 = "CREATE TABLE `demo2` AS (SELECT * FROM `demo`)"
strSQL3 = "SELECT * FROM `demo2`"

conn.Execute (strSQL1)
conn.Execute (strSQL2)
Set rs = conn.Execute(strSQL3)

Set rs = Nothing
    
conn.Close
Set conn = Nothing

此为在已执行strSQL1、strSQL2的前提下,执行strSQL3,然后将strSQL3的执行结果返回。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值