C# 数据库更新不需要';行不通
如标题所示。我试着做每件事,我在互联网上到处搜索,但它不起作用。代码如下:C# 数据库更新不需要';行不通,c#,mysql,C#,Mysql,如标题所示。我试着做每件事,我在互联网上到处搜索,但它不起作用。代码如下: public void SetIP(String IP, String Username) { try { String commandString = "UPDATE `Users` SET `IP` = '@ip' WHERE 'Username' = '@user';"; command = new MySqlCommand(c
public void SetIP(String IP, String Username)
{
try
{
String commandString = "UPDATE `Users` SET `IP` = '@ip' WHERE 'Username' = '@user';";
command = new MySqlCommand(commandString, connection);
command.Parameters.AddWithValue("@ip", IP);
command.Parameters.AddWithValue("@user", Username);
command.BeginExecuteNonQuery();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
我正确地将这两个值放入字符串IP和用户名中。我通过执行以下代码从文本框和IP地址获取用户名:
public String GetIP()
{
String direction = "";
WebRequest request = WebRequest.Create("http://checkip.dyndns.org/");
using (WebResponse response = request.GetResponse())
using (StreamReader stream = new StreamReader(response.GetResponseStream()))
{
direction = stream.ReadToEnd();
}
//Search for the ip in the html
int first = direction.IndexOf("Address: ") + 9;
int last = direction.LastIndexOf("</body>");
direction = direction.Substring(first, last - first);
return direction;
}
我只使用“LoginSystem_FindUser”,在那之后,我只使用FindUser和FindEmail进行注册
'Username' = '@user'
将始终返回false,因为它会进行字面上的比较
这是因为参数是用单引号包装的。删除单引号,它就会工作
String commandString = "UPDATE `Users` SET `IP` = @ip WHERE Username = @user;";
还有一件事,列名是标识符,所以它们也不应该用单引号括起来。我明白了。我忘了
connectionReader.Close()
在if语句之后。顺便说一句,谢谢。还是没什么。同样的事情。这一点都没有改变。我把它改成:“更新‘Users’SET‘IP’=@IP其中‘Username’=@user;”删除列名和表名周围的所有单引号,它就会工作。单引号用于字符串文本,而不是标识符。即使这样
String commandString=“UPDATE`Users`SET`IP`=@IP其中`Username`=@user”
但是在catch子句中有MessageBox
。因此,如果有任何错误,它应该给我一条消息。还是我错了?在这个问题上WPF没有什么特别的。。。移除标签。
String commandString = "UPDATE `Users` SET `IP` = @ip WHERE Username = @user;";