C# DataTable不从数据库返回任何记录。为什么呢?
我想根据两个参数返回记录,EmployeeNo和Password。我的意思是,当用户输入他/她的凭据(如EmployeeNo和Password)时,首先程序检查其是否存在于数据库中。但是我对数据表有一个问题。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
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听起来不像皇帝。不,这是一个打字错误。虽然这个代码片段可以解决这个问题,但它确实有助于提高您的文章质量。请记住,您将在将来为读者回答这个问题,而这些人可能不知道您的代码建议的原因。这可能是从中复制的。