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 に答える