【发布时间】:2015-01-23 21:05:11
【问题描述】:
我一直试图在 vb.NET 中发送一个长的 MySQL 命令。当我想将变量用作 MySQL 命令字符串的一部分时,我一直在使用“&”连接字符串。
这可行,但让我的代码看起来很乱,所以我尝试使用“{0}、{1}”等。
但这不起作用,我收到错误:
重载解析失败,因为没有可访问的“新”接受此数量的参数。
例子:
connector.Open()
commander = New MySqlCommand("UPDATE 'pupil_data' SET '" & Question & "'='" & Answer & "' WHERE 'username'=" & Environment.UserName & ";", connector)
dataAdapter = New MySqlDataAdapter(commander)
connector.Close()
但是,这可行:
connector.Open()
commander = New MySqlCommand(("UPDATE 'pupil_data' SET '{0}'='{1}' WHERE 'username'='{2}'", Question, Answer, Environment.Username), connector)
dataAdapter = New MySqlDataAdapter(commander)
connector.Close()
不起作用。这可能只是我的包围的问题,但我尝试了几种组合,这在逻辑上是合理的(我认为)。
【问题讨论】:
-
字符串不会自动使用格式掩码。您应该使用
String.Format("UPDATE pupil_data...", arg1, arg2...)与掩码和参数来获得结果。并将其放在 New SQLCommand 中或将字符串创建到临时变量并传递它 -
我不太清楚你所说的面具是什么意思。你能澄清一下吗?
-
这不是 90 年代的派对。今天(和昨天)我们使用准备好的/参数化的语句:How do I create a parameterized SQL query? Why Should I?.
标签: mysql vb.net concatenation