SQL变量返回0

时间:2014-05-14 19:12:56

标签: sql sql-server vb.net

当我在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

任何人都可以帮我理解为什么吗?

任何帮助非常感谢。

3 个答案:

答案 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

使用以下链接阅读更多相关信息

System.Data.SqlClient Namespace

祝你好运