2014-05-14 74 views
0

当我运行在SQL Server Management Studio中下面的SQL语句返回的2SQL变量返回0

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

感谢您的回复,我已将ExecuteNonQuery中的代码更改为Int(result = cmdb.ExecuteScalar()),但它仍然返回0?我是VB新手,所以我可能有语法错误?谢谢 – user3580480

+0

用vb.net语法更新 - 试试我更新的答案 –

+0

感谢Morten,它与更新的语法一起工作 – user3580480

回答

2

ExecuteNonQuery通常用于不保留结果的更新或插入,因此它返回一个整数,告诉您有多少行受到影响,而不是结果本身。

您最有可能使用的含义是ExecuteScalar,它返回查询返回的结果集中第一行的第一列,本例中为包含您的计数的整数。

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

祝你好运