[英]Prepared Statement using VB.NET, MySql, and OleDbConnection
我正在編輯一些類似於以下內容的VB.NET代碼:
Dim objConn As New OleDbConnection(mySqlConn)
objConn.Open()
dim SearchSQL = "EXEC dbo.SearchActivities N'" & LoggedUser.Text & "', N'" & searchAFEs.Text & "'"
Dim objCmd5 As New OleDbCommand(SearchSQL, objConn)
Dim objDR As OleDbDataReader
dg2.DataSource = objCmd5.ExecuteReader()
dg2.DataBind()
objConn.Close()
那家伙走了,這是我的代碼。
我想清理它,使其看起來更喜歡我喜歡的樣式:
Using cmd As New OleDbCommand("EXEC dbo.SearchActivities @value1, @value2", New OleDbConnection(mySqlConn))
cmd.Parameters.AddWithValue("value1", LoggedUser.Text)
cmd.Parameters.AddWithValue("value2", searchAFEs.Text)
cmd.Prepare()
cmd.Connection.Open()
dg2.DataSource = cmd.ExecuteReader()
dg2.DataBind()
cmd.Connection.Close()
End Using
我似乎找不到文檔,它是如何指定參數名稱,允許使用的名稱以及將其放入哪種格式的。
我最熟悉的Microsoft SQL Server將使用“ value1”和“ value2”,但是我看到MySQL希望將這些命名參數放入其中的各種方式。有些使用“?” 表示字段,但是代碼如何知道我要分配的值?
它是否只是連續的,並且會忽略提供的名稱(例如Microsoft Access)?
您所做的更改朝着正確的方向發展,因為這有助於防止sql注入攻擊,但是:
OleDbCommand
和OdbcCommand
不支持命名參數,請使用?
占位符。
像這樣:
Dim SearchSQL = "EXEC dbo.SearchActivities ?, ?"
重要說明,您必須按照它們在命令中出現的順序指定參數
試試這個代碼:
Using cmd As New OleDbCommand("EXEC dbo.SearchActivities @value1 = ?, @value2 = ?", New OleDbConnection(mySqlConn))
cmd.Parameters.AddWithValue("@value1", LoggedUser.Text)
cmd.Parameters.AddWithValue("@value2", searchAFEs.Text)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.