[.NET] SQL查詢時利用變數當參數的問題

看板Visual_Basic作者時間17年前 (2007/03/16 12:46), 編輯推噓8(803)
留言11則, 4人參與, 最新討論串1/1
一直被這一個看似簡單的問題困擾了很久, 在利用SelectCommand時我把一個變數當作SQL where條件的參數, 程式碼如下: Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim TaskID As String Dim SeqID As String Dim Seq As String TaskID = Me.DropDownList1.SelectedValue Dim sds2 As New System.Web.UI.WebControls.SqlDataSource sds2.ConnectionString = "Data Source=SHANE;Initial Catalog=AS;Persist Security Info=True;User ID=sa;Password=5408" sds2.SelectCommand = "select [順序編碼] from [Tasks] where 任務ID = '" & TaskID & "'" Dim dv2 As Data.DataView = sds2.Select(New DataSourceSelectArguments) Me.GridView2.DataSource = dv2 SeqID = dv2.Item(0).Item(0) Response.Write(SeqID) Dim sds As New System.Web.UI.WebControls.SqlDataSource sds.ConnectionString = "Data Source=SHANE;Initial Catalog=AS;Persist Security Info=True;User ID=sa;Password=5408" sds.SelectCommand = "select * from [Tasks] where (順序編碼 like '%" & SeqID & "%')" Dim dv As Data.DataView = sds.Select(New DataSourceSelectArguments) Me.GridView1.DataSource = dv Me.GridView1.DataBind() End Sub 重點在 (順序編碼 like '%" & SeqID & "%') 雖然在SeqID連接兩個%字元,可是查詢的結果跟沒有連接%的結果一樣... 但若是先傳入一個固定值給SeqID,例如 SeqID=123 這樣的結果就會正確。 我想可能是SeqID & "%" 後中間會多一個空白字元(例如:123 %,而非123%)所造成的。 這個問題讓我這個程式新手想了蠻久的,也搜尋不到相關的資訊, 希望有人能指點一下,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.108.132

03/16 15:33, , 1F
改用 str(SeqID)
03/16 15:33, 1F

03/16 15:41, , 2F
最好不要用字串組合的方式下SELECT
03/16 15:41, 2F

03/16 15:41, , 3F
會有SQL injection的問題
03/16 15:41, 3F

03/16 15:52, , 4F
感謝!我用L大的方法可以解決中間空一格的問題了!
03/16 15:52, 4F

03/16 15:52, , 5F
可是還是select不出東西 囧
03/16 15:52, 5F

03/16 15:55, , 6F
把SeqID response.write出來的數字代進去可以,可是
03/16 15:55, 6F

03/16 15:56, , 7F
用" & Seq & "代進去就是沒結果 ...
03/16 15:56, 7F

03/16 16:03, , 8F
可以了! 感謝s大~我用long的型態代進去就沒問題囉~
03/16 16:03, 8F

03/17 08:55, , 9F
dv2.Item(0).Item(0).Value.ToString() 這樣寫比較好?
03/17 08:55, 9F

03/17 08:55, , 10F
Replace(SeqID, "'", "''") 一個單引號取代為2個單引號
03/17 08:55, 10F

03/17 18:22, , 11F
感謝版大的建議!
03/17 18:22, 11F
文章代碼(AID): #15-Y4f1K (Visual_Basic)