2013-04-13 40 views
1

我使用此代碼來獲取無機(計數)的...如何設置彙總SQL查詢的結果作爲拉布勒標題

Dim strCntSr As String = "SELECT count(sr_no) FROM Vendor_Machine WHERE chaln_no='" & cmbChal_no.Text & "'" 
    comm_getCnt = New OleDb.OleDbCommand(strCntSr, cnnOLEDB) 
    comm_getCnt.ExecuteNonQuery() 

    ***Here I want to set result of the above query [count(sr_no)] as text of lblMachine*** 

    lblMachine.Text = 

請建議我的代碼..謝謝..

回答

2

ExecuteNonQuery僅返回受影響的行數而不是查詢返回的值。
在你的情況下,使用正確的方法是ExecuteScalar,它返回查詢獲得的第一行的第一列。

另請注意,使用字符串連接構建查詢文本的做法非常糟糕。
問題是Sql Injection並正確解析您提供的文本。

Dim strCntSr As String = "SELECT count(sr_no) FROM Vendor_Machine WHERE chaln_no=?" 
comm_getCnt = New OleDb.OleDbCommand(strCntSr, cnnOLEDB) 
comm_getCnt.Parameters.AddWithValue("@p1", cmbChal_no.Text) 
Dim result = comm_getCnt.ExecuteScalar() 
lblMachine.Text = Convert.ToInt32(result); 
+0

謝謝..很多..我會記住查詢參數.. – Harabati