C# DataTable不从数据库返回任何记录。为什么呢?

C# DataTable不从数据库返回任何记录。为什么呢?,c#,asp.net,login,datatable,webforms,C#,Asp.net,Login,Datatable,Webforms,我想根据两个参数返回记录,EmployeeNo和Password。我的意思是,当用户输入他/她的凭据(如EmployeeNo和Password)时,首先程序检查其是否存在于数据库中。但是我对数据表有一个问题。Datatable没有行。下面是我的代码,对我来说似乎没问题,但我不知道为什么它不工作。这是我的密码 protected void btnLogin_Click(object sender, EventArgs e) { using (SqlConnection co

我想根据两个参数返回记录,EmployeeNo和Password。我的意思是,当用户输入他/她的凭据(如EmployeeNo和Password)时,首先程序检查其是否存在于数据库中。但是我对数据表有一个问题。Datatable没有行。下面是我的代码,对我来说似乎没问题,但我不知道为什么它不工作。这是我的密码

protected void btnLogin_Click(object sender, EventArgs e)
    {
        using (SqlConnection con = new SqlConnection(Base.GetConnection))
        {
            SqlCommand cmd = new SqlCommand("SELECT * FROM TableUserProfile WHERE UserEmpNum=@UserEmpNum and UserPassword=@UserPassword", con);
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.AddWithValue("@UserEmpNum", tbEmpNumber.Text);
            cmd.Parameters.AddWithValue("@UserPassword", tbPassword.Text);
            con.Open();
            SqlDataAdapter ad = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            ad.Fill(dt);

            cmd.ExecuteNonQuery();
            if (dt.Rows.Count != 0)
            {
                if (cbRememberLogin.Checked)
                {
                    Response.Cookies["UEmpNo"].Value = tbEmpNumber.Text;
                    Response.Cookies["UPass"].Value = tbPassword.Text;
                    Response.Cookies["UEmpNo"].Expires = DateTime.Now.AddDays(15);
                    Response.Cookies["UPass"].Expires = DateTime.Now.AddDays(15);
                }
                else
                {
                    Response.Cookies["UEmpNo"].Expires = DateTime.Now.AddDays(-1);
                    Response.Cookies["UPass"].Expires = DateTime.Now.AddDays(-1);
                }

                Session["UserEmployee"] = tbEmpNumber.Text;
                Response.Redirect("~/UserProfile.aspx");
            }
        }
    }
当我将我的程序置于调试模式时,它不会检索任何内容,这是图片

这是我的数据库表

试试这段代码

        MySqlDataAdapter sda = new MySqlDataAdapter();
        cmd.Connection = con;
        sda.SelectCommand = cmd;
        DataTable dt = new DataTable();
        sda.Fill(dt);
        if (dt.Rows.Count > 0 && dt != null)
        {
            gvr_rkit.DataSource = dt;
            gvr_rkit.DataBind();
        }
SqlDataAdapter是ADO.NET数据提供程序的一部分。SqlDataAdapter在SqlConnection对象的帮助下提供数据集和数据源之间的通信。SqlDataAdapter与数据集一起工作以提供断开连接的数据检索机制


SqlDataAdapter的SelectCommand属性是从数据源检索数据的命令对象。DataAdapter的Fill方法用于使用SelectCommand的结果填充数据集。Fill方法将要填充的数据集、DataTable对象或要用SelectCommand返回的行填充的DataTable的名称作为其参数

除了文本框中意外的空白外,我不明白为什么。但我很难忘记你的密码是以明文形式存储的。可能是重复的否,这只是我正在检查。我将使用MD5进行密码加密。这里没有空格的问题。我强烈怀疑你是在用UserEmpNum搜索,而你是在用UserName搜索。我这么说是因为AFFAQ听起来不像皇帝。不,这是一个打字错误。虽然这个代码片段可以解决这个问题,但它确实有助于提高您的文章质量。请记住,您将在将来为读者回答这个问题,而这些人可能不知道您的代码建议的原因。这可能是从中复制的。