0

我有一个问题,我在下面简化了。我有一个由参数填充的 sql 语句,即 Prepared 语句。是否可以获得最终的准备好的语句并将其存储在变量中

这是我想要做的,但它不起作用

Dim cmd As New MySqlCommand("UPDATE `users` SET `email` = ?email", con)
cmd.Prepare()
cmd.Parameters.AddWithValue("?name", "newEmail")

现在我在这里尝试这样做

Dim finalQuary As String = cmd.CommandText.ToString

我这样做是希望在变量中得到这个:

"UPDATE `users` SET `email` = theEmailAddress"

但相反,我得到了原始的未经准备的声明,即

UPDATE `users` SET `email` = ?email

我希望你能理解我的问题。如果我不清楚,请告诉我

4

2 回答 2

1

替换是在执行时在 MySQL 端完成的。您基本上是在尝试获取一个函数的代码,其中所有参数都替换为提供的值。除非 VB.NET 正在模拟准备好的语句(我猜它不是),或者 MySQL 有一个 API 可以返回一个插值字符串(据我所知它没有),否则你无法获得插值字符串版本的查询。

于 2012-10-13T06:36:58.043 回答
0

使用@而不是?

Dim cmd As New MySqlCommand("UPDATE `users` SET `email` = @email", con)
cmd.Parameters.AddWithValue("@email", "newEmail")
于 2012-10-13T06:30:47.023 回答