2014-05-14 73 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

祝你好運