2013-09-24 60 views
1

前面我想這一個選擇查詢比參數返回多個行通過

string query = "SELECT TOP " + TraineesPerBlock + 
       @"   * 
        FROM TraineeDetail 
        WHERE SUBBR = '0' 
       ORDER BY MAXM DESC" ; 

在traineesPerBlock當值passesd 69這是給110的記錄,我應該給69只.. MAXM是雙場,也有記錄具有相同的MAXM值。 任何解決方案?

+3

你確定傳遞的值是'69',把一個破發點並確認。 – Habib

+0

你能告訴我'TraineesPerBlock'是什麼類型嗎? – Dutts

+4

只是把這個這裏以及:http://security.stackexchange.com/questions/25684/how-can-i-explain-sql-injection-without-technical-jargon – Anthony

回答

1

首先,我會試圖找出是因爲開發環境還是數據庫問題。 在DBMS shell中執行腳本,將TraineesPerBlock替換爲數字69,70。 在演播室執行相同的操作。 另外,如果TraineesPerBlock是int,則嘗試將其強制轉換爲字符串顯式。

+0

這應該是一個真正的評論。將int轉換爲字符串將不會改變,因爲這裏的+運算符會在內部對int執行ToString。 – stevepkr84

0

你是十六進制還是十進制?

0x69(十六進制)非常接近105(十進制),這是你得到的數字。