gpt4 book ai didi

mysql - 使用 MySqlCommand..Parameters.Add(New MySqlParameter ("@sampleVariable", sampleVariable) 时如何查看参数内部的内容

转载 作者:行者123 更新时间:2023-11-29 06:14:50 28 4
gpt4 key购买 nike

例如我有这个查询

    MySQL_Query = "UPDATE `owner_info` " _
& "SET isArchived = 1 " _
& "WHERE id=@ownerID"

Dim MySQL_CMD As New MySqlCommand(MySQL_Query, MysqlConn)

Try
MySQL_CMD.Connection.Open()
MySQL_CMD.CommandText = MySQL_Query
MySQL_CMD.Parameters.Add(New MySqlParameter("@ownerID", ownerID))
MySQL_CMD.ExecuteNonQuery()
Catch myerror As MySqlException
Console.WriteLine("Error: Owner Info Delete")
Console.WriteLine(myerror)
Finally
MysqlConn.Close()
MysqlConn.Dispose()
End Try

如果我用

console.writeline("Query: " & MySQL_Query")

会输出

UPDATE `owner_info` SET isArchived = 1 WHERE id=@ownerID

有没有一种方法可以让我查看@ownerID 中的内容?

是的,我可以像下面的代码那样做,但这似乎很麻烦?

console.writeline("Query: " & MySQL_Query" & "(" & ownerID & ")")

还有其他方法吗?也许更简单的方法。

最佳答案

查询参数的全部要点是参数数据值从不替换到sql命令文本中,即使是数据库服务器也是如此。这样,就消除了注入(inject)漏洞的任何可能性。因此,没有内置提供填充或注释的命令文本,以免一些天真的程序员错误地使用它来构造易受攻击的查询。

但是,您可以轻松构建可重用的方法:

Function PrintQuery(ByVal cmd As IDbCommand) As String
Dim result As New StringBuilder(cmd.CommandText)
result.Append(vbCrLf & vbCrLf & "--Parameter List: ")
For Each p As DbParameter In cmd.Parameters
result.AppendFormat("{0}--({1} —— {2})", vbCrLf, p.ParameterName, p.Value)
Next p
Return result.ToString()
End Function

关于mysql - 使用 MySqlCommand..Parameters.Add(New MySqlParameter ("@sampleVariable", sampleVariable) 时如何查看参数内部的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36439639/

28 4 0