0
`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)

「このコードが機能しない理由を誰かが言うことができますか?1つ以上の必須パラメーターに値がないと書かれています」

4

2 に答える 2

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
于 2012-07-22T10:54:49.820 に答える
0

SQLステートメントを印刷して、問題がないかどうかを確認し、コピーしてSQL管理スタジオに貼り付けます。文字列 Combo3.Text の周りにアポストロフィがないと思います。

また、Combo3.Text に含まれている場合にどのような sql になるかを検討してください。

'a'; delete from Balance
于 2012-07-22T10:54:02.533 に答える