繁体   English   中英

在C#中使用while循环内的条件

[英]Using condition inside a while loop in C#

我的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);
        }
    }
}

您的解决方案均无效。 您似乎认为您的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循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM