我无法使用c#asp.net从数据库中获取任何行数据。我正在尝试从我的数据库中获取一行数据,但它没有返回任何行。我正在使用3轮胎架构,我正在解释我的代码如下。
index.aspx.cs:
protected void userLogin_Click(object sender, EventArgs e)
{
if (loginemail.Text.Trim().Length > 0 && loginpass.Text.Trim().Length >= 6)
{
objUserBO.email_id = loginemail.Text.Trim();
objUserBO.password = loginpass.Text.Trim();
DataTable dt= objUserBL.getUserDetails(objUserBO);
Response.Write(dt.Rows.Count);
}
}
userBL.cs:
public DataTable getUserDetails(userBO objUserBO)
{
userDL objUserDL = new userDL();
try
{
DataTable dt = objUserDL.getUserDetails(objUserBO);
return dt;
}
catch (Exception e)
{
throw e;
}
}
userDL.cs:
public DataTable getUserDetails(userBO objUserBO)
{
SqlConnection con = new SqlConnection(CmVar.convar);
try
{
con.Open();
DataTable dt = new DataTable();
string sql = "SELECT * from T_User_Master WHERE User_Email_ID= ' " + objUserBO.email_id + "'";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter objadp = new SqlDataAdapter(cmd);
objadp.Fill(dt);
con.Close();
return dt;
}
catch(Exception e)
{
throw e;
}
}
当我检查Response.Write(dt.Rows.Count);
的输出时,它显示0
。所以请帮我解决此问题。
答案 0 :(得分:2)
您的查询字符串似乎在'
和"
标记之间有一个冗余空格。这可能会导致所有麻烦,因为您的电子邮件在前面占据了空间。
使用SqlConnection.Parameters属性向查询添加参数绝对更好。
string sql = "SELECT * from T_User_Master WHERE User_Email_ID=@userID";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.Add("@userID", SqlDbType.NVarChar);
cmd.Parameters["@userID"].Value = objUserBO.email_id;