我的C#代码有问题。
我需要验证用户名,我在while循环中使用了if条件,但事实是即使用户名和密码不正确,它也不会执行任何语句。
我已在数据库中测试了身份验证查询,输出正确。
我尝试过使用这三种不同的解决方案但没有成功。
这是我的代码:
解决方案#1
using (OdbcDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
int count = reader.GetInt32(0);
if (count > 0)
{
Response.Write("Welcome!");
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('no data.');", true);
}
}
}
解决方案#2
using (OdbcDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if (reader.HasRows)
{
Response.Write("Welcome!");
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('no data.');", true);
}
}
}
解决方案#3
using (OdbcDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if (!String.IsNullOrEmpty(reader[0].ToString()))
{
Response.Write("Welcome!");
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('no data.');", true);
}
}
}
答案 0 :(得分:3)
您的解决方案均无效。您似乎认为您的while
循环始终是执行的,但事实并非如此。当您的sql查询返回0行时,您永远不会进入while(reader.Read())
循环。
基于第二种解决方案的简单方法可能如下所示:
using (OdbcDataReader reader = command.ExecuteReader())
{
if (reader.HasRows)
{
Response.Write("Welcome!");
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('no data.');", true);
}
}
请注意没有涉及while
循环。