美文网首页
ADO参数化(VBA)

ADO参数化(VBA)

作者: 五维思考 | 来源:发表于2020-10-03 20:28 被阅读0次

ADO参数化的好处

  1. 避免SQL注入攻击;2. 省去SQL字符串拼接;3. 避免出错

方式一

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim param As ADODB.Parameter
Dim Sql As String

sql = "Select * From tb Where userName = ? And age = ? " 

Set cn = New ADODB.Connection
cn.Open "......"   '数据库连接语句

Set cmd = New ADODB.Command
With cmd
    .ActiveConnection = cn
    .CommandType = adCmdText
    .CommandText = sql
    Set param = .CreateParameter("?", adVarchar, adParamInput, 20, txtName.Text)
    .Parameters.Append param
    Set param = .CreateParameter("?", adInteger, adParamInput, 4, txtAge.Text)
    .Parameters.Append param
    Set rs = .Execute
End With
'.......
Set rs = Nothing
Set cmd = Nothing
Set cn = Nothing

方式二

Dim con As ADODB.Connection   
Dim cmd As ADODB.Command   
Dim Sql As String   
Dim arrValue   
Dim i As Long   
  
Sql = "INSERT INTO tb(descr,qty,dt) VALUES(?,?,?)"  
arrValue = Array("Test", 152, "2010-11-28") '参数值   
  
Set con = New ADODB.Connection  
con.CursorLocation = adUseClient '客户端游标 
con.Open "....."   '连接数据库   
  
Set cmd = New ADODB.Command   
With cmd   
    .ActiveConnection = con   
    .CommandText = Sql   
    .CommandType = adCmdText   
    For i = 0 To .Parameters.Count - 1   
        .Parameters(i) = arrValue(i)   
    Next   
    .Execute   
End With   
Set cmd = Nothing   
Set con = Nothing

这个方法同样也可以用于sql数据库的存储过程,只是要注意二点:一是存储过程的用户第一个参数的序号是1,序号0参数已经用于存储过程内部的事务;二是输出参数不用赋值。

相关文章

  • ADO参数化(VBA)

    ADO参数化的好处 避免SQL注入攻击;2. 省去SQL字符串拼接;3. 避免出错 方式一 方式二 这个方法同样也...

  • 一.连接数据库

    一、主要流程1.进入VBA编辑器,引用ADO(Microsoft ActiveX Date Objects 6.1...

  • VBA小白入门之:ADO

    本篇参考了众多资料,主要是: Excel VBA+ADO+SQL入门教程001:认识SQL In Excel Ex...

  • 萝卜头python:PYTHON 与VBA互调

    1、python调用 VBA假定我们的excel里边有个vba函数:foo,参数是args 其 VBA函数为 PY...

  • python基础-day2

    不定参数(变长参数 ) ado使用 ... 表示变长参数,那py呢?python自定义函数中有两中不定长参数,第一...

  • 使用ADO操纵外部数据

    作用:将指定路径的数据抓过来, ADO如何连接外部数据源 开始前需要在VBA界面 -- 工具 -- 引用勾选Mic...

  • Excel中通过ADO执行SQL

    VBA执行SQL语句有一个固定的套路: 绑定ADO 连接数据源 设置查询语句,并执行 写入查询结果 关闭连接释放资...

  • VBA循环结构没过瘾,那就再来一篇

    这是免费教程《Excel VBA:办公自动化》的第10节,介绍while循环结构。 1.认识VBA:什么是VBA?...

  • 还自己写代码?VBA录制宏了解下

    这是《Excel VBA:办公自动化》教程的第9节,介绍录制宏。 1.认识VBA:什么是VBA?[http://m...

  • VBA字符串介绍,这篇就够了

    这是《Excel VBA:办公自动化》教程的第8节,介绍字符串。 1.认识VBA:什么是VBA?[http://m...

网友评论

      本文标题:ADO参数化(VBA)

      本文链接:https://www.haomeiwen.com/subject/ozzwuktx.html