当我在SQL Server Management Studio中运行以下SQL语句时,它返回计数2
SELECT COUNT(*)
FROM Daisy_Copy2
WHERE ChargeCode = '1';
但由于某些原因,当我运行以下VB.net代码时,result
变量返回0并且不识别存在重复代码。
Dim result As Integer
Using cmdb = New SqlCommand("SELECT COUNT(*) FROM Daisy_Copy2 WHERE ChargeCode = '1'", conn)
Int(result = cmdb.ExecuteScalar())
If result > 1 Then
MessageBox.Show("Duplicate Codes Exist!", "Billing", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MsgBox(result)
End If
End Using
任何人都可以帮我理解为什么吗?
任何帮助非常感谢。
答案 0 :(得分:2)
ExecuteNonQuery通常用于不留下结果的更新或插入,因此它返回一个整数,告诉您受影响的行数,而不是结果本身。
您最有可能使用的是ExecuteScalar,它返回查询返回的结果集中第一行的第一列,在这种情况下是包含您的计数的整数。
答案 1 :(得分:2)
而不是ExecuteNonQuery,您应该使用ExecuteScalar
Dim result As Integer = CInt(cmd.ExecuteScalar())
答案 2 :(得分:0)
这只是您可以使用的一种方式:
Dim Sqlda = New SqlDataAdapter("SELECT COUNT(*) AS tCount FROM Daisy_Copy2 WHERE ChargeCode=1", conn)
Dim sqlds = New DataSet
Sqlda.Fill(sqlds, "Daisy_Copy2")
Dim tblRow As DataRow
For Each tblRow In sqlds.Tables("Daisy_Copy2").Rows
MsgBox(tblRow("tCount").ToString())
Next
使用以下链接阅读更多相关信息
祝你好运