【问题标题】:How can I use where function using insert into module如何使用插入模块的 where 函数
【发布时间】:2014-04-30 00:03:21
【问题描述】:

我的命令在我的 sql 命令 where 子句中有错误,我该如何处理?有什么建议或帮助吗?

这是我的错误: 在第 1 行的 'WHERE controlNumber = '' 附近使用的语法

cmd = New Odbc.OdbcCommand("INSERT INTO alamnotice (correctivePreventive) VALUES('" & Trim(txtremarks.Text.TrimEnd()) & "') WHERE controlNumber ='" & Trim(Form1.txtcontrolNumber.Text.TrimEnd()) & "'", con)           

cmd.ExecuteNonQuery()

【问题讨论】:

  • My command is error in my where module
  • 断开什么?连接什么?我认为您缺少 using 语句或其他内容。你遇到了什么错误?
  • 您应该阅读 SQL 注入和使用参数的预处理语句...马上...现在;但错误是什么 - VS/VB 告诉你的不仅仅是“SQL 命令中的错误”
  • 只关注我的 sql 命令,我试图询问我声明的位置是否正确。因为那是我唯一的问题。
  • SQL INSERT 不使用 WHERE 子句

标签: vb.net


【解决方案1】:

您还没有说错误是什么,可能与断开连接有关,但我怀疑这是 SQL 语法错误,因为 INSERT 没有使用 WHERE(您正在插入 new 数据)。

这里有一种使用params的方法,可以让代码更容易阅读,避免SQL注入攻击:

Dim SQL As String = "INSERT INTO alamnotice (correctivePreventive,
             sectionInCharge, shiftInCharge, SectionHead, status, 
             dateResponded, remarksSurrendingAlarm, Remarks) 
             VALUES ("@p1", "@p2", "@p3", "@p4", "@p5", "@p6", "@p7", "@p8")"

' I am assuming OleDB, but much the same for others
'    be sure to add the values in the same order with OleDB
Using cmd As New OleDbCommand(SQL, dbCon)
  cmd.Parameters.AddWithValue("@p1", txtcorPrevAction.Text )
  cmd.Parameters.AddWithValue("@p2", txtCause.Text)
  cmd.Parameters.AddWithValue("@p3", cmbstatus.Text)
  ' etc

  cmd.ExecuteNonQuery()
End Using

对于非字符串列,例如日期,转换文本框文本:

cmd.Parameters.AddWithValue("@pX", COnvert.ToInt32(txtSomeValue.Text))

代码更易于阅读,如果您不将刻度和内容粘贴到字符串中,则字符串格式错误(例如缺少')会少得多

【讨论】:

    【解决方案2】:

    试试这个:

    UPDATE alamnotice SET correctivePreventive = '" & Trim(txtremarks.Text.TrimEnd()) & "'  WHERE controlNumber ='" & Trim(Form1.txtcontrolNumber.Text.TrimEnd()) & "'"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      相关资源
      最近更新 更多