如果我的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
任何人都可以帮助使用正确的语法吗?
答案 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
。