数据库更新不起作用
本文关键字:不起作用 更新 数据库 | 更新日期: 2023-09-27 18:32:50
如标题。我尝试做所有事情,我在互联网上到处搜索,但它不起作用。代码如下:
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;
}
我只是像这样调用方法SetIP:SetIP(GetIP(),UsernameBox.Text);但是当我来到数据库检查它是否更改时,它仍然是一样的。一直以来。
//编辑:收到此错误命令:"已有一个与此连接关联的打开数据读取器,必须先关闭该读取器。
我使用此数据读取器:
public bool FindUsername(String Username)
{
String commandString = "select * from Users where Username = '" + Username + "';";
command = new MySqlCommand(commandString, connection);
MySqlDataReader connectionReader = command.ExecuteReader();
if (connectionReader.Read())
{
connectionReader.Close();
return true;
}
else
{
connectionReader.Close();
return false;
}
}
public bool FindEmail(String Email)
{
String commandString = "select * from Users where Email = '" + Email + "';";
command = new MySqlCommand(commandString, connection);
MySqlDataReader connectionReader = command.ExecuteReader();
if (connectionReader.Read())
{
connectionReader.Close();
return true;
}
else
{
connectionReader.Close();
return false;
}
}
public bool LoginSystem_FindUser(String Username, String Password)
{
String commandString = "select * from Users where Username = '"+Username+"' and Password = '"+Password+"' ;";
command = new MySqlCommand(commandString, connection);
MySqlDataReader connectionReader = command.ExecuteReader();
if (connectionReader.Read())
{
return true;
}
else
{
connectionReader.Close();
return false;
}
}
我只使用"LoginSystem_FindUser",之后我只使用SetIP,FindUser和FindEmail进行注册。
'Username' = '@user'
将始终返回 false,因为它从字面上比较。
这是因为您的参数是用单引号括起来的。删除单引号,它将起作用。
String commandString = "UPDATE `Users` SET `IP` = @ip WHERE Username = @user;";
还有一件事,列名是标识符,所以它们也不应该用单引号括起来。
我明白了。我忘了
connectionReader.Close();
在 if 语句之后。谢谢顺便说一句。