Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“vb.NET”;{0}";串联不';在MySQL命令中不起作用,但&&引用;做_Mysql_Vb.net_Concatenation - Fatal编程技术网

“vb.NET”;{0}";串联不';在MySQL命令中不起作用,但&&引用;做

“vb.NET”;{0}";串联不';在MySQL命令中不起作用,但&&引用;做,mysql,vb.net,concatenation,Mysql,Vb.net,Concatenation,我一直在尝试在vb.NET中发送一个长的MySQL命令。当我想使用变量作为MySQL命令字符串的一部分时,我一直在使用“&”连接字符串 这是可行的,但使我的代码看起来很混乱,所以我尝试使用“{0},{1}”等 但是,这不起作用,我得到一个错误: 重载解析失败,因为没有可访问的“New”接受此数量的参数 示例: connector.Open() commander = New MySqlCommand("UPDATE 'pupil_data' SET '" & Question &

我一直在尝试在vb.NET中发送一个长的MySQL命令。当我想使用变量作为MySQL命令字符串的一部分时,我一直在使用“&”连接字符串

这是可行的,但使我的代码看起来很混乱,所以我尝试使用“{0},{1}”等

但是,这不起作用,我得到一个错误:

重载解析失败,因为没有可访问的“New”接受此数量的参数

示例:

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()
不起作用。这可能是我的括号有问题,但我尝试了几种组合,而且逻辑上是合理的(我认为)。

指定的“{n}”并不表示自动连接,而是用作
String.Format
的一部分的格式占位符。带有占位符的字符串不会自动使用,因为它知道如何处理它。您的
MySQLCommand
对象肯定不知道如何使用它,因此您会得到错误。例如:

connector.Open()
Dim SQL As String = String.Format("UPDATE pupil_data SET '{0}'='{1}' WHERE 'username'='{2}'", 
       Question, Answer, Environment.Username)
commander = New MySqlCommand(SQL, connector)
dataAdapter = New MySqlDataAdapter(commander)
connector.Close()
我也不确定您是否需要SQL中的所有这些记号。请注意,如果像
Question
这样的内容是数字,则需要转换为字符串:

Dim SQL As String = String.Format("Update ...", 
       Question.ToString, Answer.ToString, Environment.Username)
还有一些东西,比如
Console.WriteLine
StringBuilder.AppendFormat
,也可以自动实现这一点


请注意,这绝对是创建SQL的错误方法。例如,如果用户名是
D'Artagnan
则查询将阻塞。String.Format不会保护您免受SQL注入的影响,它只是比将字符串的位连接在一起更简洁的代码。

String不会自动使用格式掩码。您应该使用带掩码和args的
String.Format(“更新瞳孔数据…”)、arg1、arg2…
来获得结果。然后把它放在新的SQLCommand中,或者创建一个临时变量的字符串,并传递给它。我不太清楚你所说的掩码是什么意思。你能澄清一下吗?这不是90年代的派对。今天(和昨天)我们使用准备好的/参数化的语句:。