【问题标题】:connection.execute连接.执行
【发布时间】:2012-07-22 10:41:49
【问题描述】:
`Dim con1 As New ADODB.Connection
Dim rs1 As New ADODB.Recordset
Dim sql1 As String
sql1 = "Update Balance set Balance_Amt = (Balance_Amt + " & a & ") where Company = " & Combo3.Text
con1.Execute (sql1)

“谁能说出为什么这段代码不起作用?它说 No value for one or more required parameters”

【问题讨论】:

    标签: database vb.net connection


    【解决方案1】:

    我猜直接的问题是 SQL 片段

    where Company = value
    

    是无效的 SQL。应该引用:

    where Company = 'value'
    

    但您确实应该使用 SQL 参数。

    1. 我会避免这个问题,因为参数会在必要时自动引用。
    2. 这会使代码更易于阅读。
    3. 它不会受到 SQL 注入攻击。

    例如

    Using cmd = new SqlCommand("UPDATE Balance SET Balance_Amt = (Balance_Amt + @a) WHERE Company=@company", con1)
        cmd.Parameters.AddWithValue("@a", a)
        cmd.Parameters.AddWithValue("@company", company)
        cmd.ExecuteNonQuery()
    End Using
    

    【讨论】:

    • 很好的答案,但是这个例子有点脱离上下文。 ADODB 不是 ADO.NET
    • 我没有意识到 OP 正在使用 ADODB(当然现在我再看一遍,这似乎很明显)。我刚刚学习了足够的 VB.NET 语法来翻译我通常使用 ADO.NET 用 C# 编写的内容。任何了解 ADODB 的人,都可以随意修改(或添加)我的示例。
    【解决方案2】:

    打印出sql语句,看看是否ok,复制粘贴到sql管理工作室。 我认为您在字符串 Combo3.Text 周围缺少撇号。

    还要考虑如果 Combo3.Text 包含它会导致什么 sql

    'a'; delete from Balance
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 2011-07-29
      • 1970-01-01
      • 2022-07-30
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多