【发布时间】:2018-07-07 12:57:09
【问题描述】:
下面是我使用 MySqlDataReader 连接到数据库的代码。现在 if 语句工作正常,但 else 语句没有。当我在 VS 中使用调试功能时,它一直跳过 else 语句并跳转到 reader.Close();。 任何想法。谢谢
private void db()
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
MySqlConnection connection = new MySqlConnection(constr);
connection.Open();
MySqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM user Where user_id ='" + Userid.Text + "'" + "And password='" + Password.Text + "'";
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
Label1.Text = reader["user_id"].ToString();
}
else
{
Label1.Text = "nodata";
}
reader.Close();
}
}
【问题讨论】:
-
您是否打算将
reader.Close()放入循环中?如果有,为什么会有循环? -
你不需要循环,只需使用
if (reader.Read()) -
将
reader.Close()移出循环,将其更改为if (reader.Read()),清理,重建,如果您仍然遇到问题,请告诉我们。 -
这段代码没有多大意义。您不会关闭阅读器,然后尝试从中读取!此外,您的代码存在大量安全缺陷;阅读 SQL 注入。
-
另外作为一个旁注,以在将来为您节省大量头痛(以及容易发现的安全漏洞),请切换到使用parameterized SQL queries。目前我可以使用用户名
' or 1 = 1; drop table user; --,我会删除你的整个用户表。
标签: c# asp.net mysqldatareader