簡體   English   中英

使用VB.NET,MySql和OleDbConnection的准備好的語句

[英]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注入攻擊,但是:

OleDbCommandOdbcCommand不支持命名參數,請使用? 占位符。

像這樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM