使用c#asp.net从数据库中获取任何行数据。

时间:2015-07-16 08:53:21

标签: c# asp.net 3-tier

我无法使用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。所以请帮我解决此问题。

1 个答案:

答案 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;