2015-10-06 107 views
0

我使用此語法來彙總ID之間的一些數據..但它只是選擇最後一個ID的值..vb.net。 SQL SUM和之間,無法總和值

我有3表fied ,,有ID ,到達,離開,和距離..

這裏是語法:

SQLcmd = New SqlCommand("SELECT SUM(CAST(distance AS Numeric(10, 0))) FROM route WHERE id BETWEEN " & s & " AND " & w & "", SQLCon) 
    Dim r As SqlDataReader = SQLcmd.ExecuteReader 

    r.Read() 
    distance2 = r(0).ToString 

S和W是整數

所以我顯示距離對textbox1.text =距離2的值..

問題是,該值不是該查詢的總和,但textbox1.text的值是「w」的值,在sqlserver上的查詢正常,我將s和w替換爲1和3 ,但是當我在VB.net上使用它是行不通的。

任何人都可以提供幫助嗎?

+4

如果有人進入'; DROP TABLE route;'進入爲's'提供值的UI,某人將有一個非常糟糕的一天。查看參數化查詢。 –

+0

抱歉..你的意思是? –

+1

您的SQL受到稱爲SQL注入的漏洞的影響。如果有人爲你的參數輸入某些值,他們可以在你的數據庫中刪除表,查詢他們不應該的數據,並做各種其他討厭的事情。參數化查詢可以保護您免受此類問題的困擾。 –

回答

-1

我建議,你必須

... " & s & " AND " & w & "... 

你需要有

... " + s.ToString() + " AND " + w.ToString() + " ... 

否則&運營商將不執行字符串連接,而是類型轉換。這個規則是神祕的(看看here的底漆)。

+0

您錯了。你的第一行工作正常。 &是在VB.NET中連接的正確方法。我想你可能會對你鏈接的文章所討論的Vb6行爲感到困惑 –