使用带有SQL值的VB.net IF语句

时间:2014-05-12 07:35:09

标签: sql vb.net

如果我的SQL值大于1,我试图使用IF语句执行某个操作。

但是,当我运行以下代码时,它会返回错误。

  

运营商'>'没有为类型定义System.Data.SqlClient.SqlCommand'和'整数'。

以下是代码:

Using cmdb = New SqlCommand("INSERT INTO AdditionalDaisyCodes (AddCode) VALUES (@AddCode)", con)
  con.Open()
  cmdb.ExecuteNonQuery()
  con.Close()

  If cmdb > 1 Then

    MessageBox.Show("Duplicate Codes Exist!", "Indigo Billing", _
    MessageBoxButtons.OK, MessageBoxIcon.Information)

  Else
  End If
End Using

任何人都可以帮助使用正确的语法吗?

2 个答案:

答案 0 :(得分:4)

使用此

   int result=cmdb.ExecuteNonQuery();
if result > 1 then
//code here
else
end if

答案 1 :(得分:1)

你遇到的问题不仅仅是语法错误。根据您发布的代码,您似乎想要通知用户存在重复的代码。由于您有Else,我会猜测并说如果找不到重复的代码,则需要进行插入。

目前受ExecuteNonQuery()影响的行数从不大于1.此外,在您发布的代码中,您永远不会为@AddCode参数指定值 - 如果AddCode列不能为空,则可能导致错误。

您可能想要做的是检查代码是否存在,如果不存在则添加它。像这样的东西可以解决这个问题:

Using cmdb = New SqlCommand("SELECT * FROM AdditionalDaisyCodes WHERE AddCode = @AddCode", con)
    con.Open()

    cmdb.Parameters.AddWithValue("@AddCode", txtAddCode.Text)
    Dim reader As SqlDataReader = cmdb.ExecuteReader()

    If reader.HasRows Then
        MessageBox.Show("Duplicate Codes Exist!", "Indigo Billing", _
MessageBoxButtons.OK, MessageBoxIcon.Information)

    Else
        cmdb.CommandText = "INSERT INTO AdditionalDaisyCodes(AddCode) Values(@AddCode)"
        cmdb.Parameters.AddWithValue("@AddCode", txtAddCode.Text)
        cmdb.ExecuteNonQuery()

    End If

    con.Close()
End Using
上面示例中的

txtAddCode.Text假设代码来自名为TextBox的{​​{1}}。首先,它通过运行受WHERE子句约束的SELECT查询来检查代码是否已经在表中。如果返回的txtAddCode包含行,则该代码已在表中,并显示消息框。

如果SqlDataReader没有行,则代码不在表格中,SqlDataReader会被重复用于插入。

另请注意,您也可以将cmdb放在SqlConnection块中,从而无需明确调用连接上的Using