为什么我到达那里已经有一个与此连接关联的打开数据读取器,必须首先关闭错误
本文关键字:读取 数据 错误 那里 有一个 关联 连接 为什么 | 更新日期: 2023-09-27 18:33:02
try
{
string log = "SELECT * from rfidprototype.account where username ='" + USERNAME + "' and password = '" + PASS + "';";
MySqlCommand cmd = new MySqlCommand(log, SQLconn);
MySqlDataReader dRead;
dRead = cmd.ExecuteReader();
if (DRead.Read())
{
MenuHere form = new MenuHere();
form.Show();
form.ManageTile.Enabled = false;
SQLconn.Close();
DRead.Close();
}
else
{
MessageBox.Show("Incorrect Username or Password!");
DiriLogin form = new DiriLogin();
form.ShowDialog();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
在您的情况下,您在阅读阅读器时尝试关闭连接。
不要手动使用 Close
或 Dispose
方法,而是使用 using
语句自动释放连接、命令和读取器。
但更重要的是,应始终使用参数化查询。这种字符串串联对SQL注入攻击是开放的。
并且不要将您的密码存储为纯文本。阅读:在数据库中存储密码的最佳方法
using(var SQLconn = new MySqlConnection(conString))
using(var cmd = SQLconn.CreateCommand())
{
// Set your CommandText property.
using(var dRead = cmd.ExecuteReader())
{
// Do your stuff
}
}
最后一件事,PASSWORD
是MySQL中的保留关键字。您可能需要在 ' 字符之间使用它,具体取决于数据库管理器是否区分大小写。