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

使用c#asp.net无法从数据库中获取任何行数据。,c#,asp.net,3-tier,C#,Asp.net,3 Tier,我无法使用c#asp.net从数据库中获取任何行数据。我正在尝试从我的数据库中获取一行数据,但它不会返回任何行。我正在为此使用3-tire体系结构,并在下面解释我的代码 index.aspx.cs: userBL.cs: userDL.cs: 当我检查Response.Write(dt.Rows.Count)的输出时,它显示的是0。因此请帮助我解决此问题。您的查询字符串在“和”标记之间似乎有多余的空格。这可能会导致所有问题,因为您的电子邮件前面有空格 使用属性将参数添加到查询中当然更好 stri

我无法使用c#asp.net从数据库中获取任何行数据。我正在尝试从我的数据库中获取一行数据,但它不会返回任何行。我正在为此使用3-tire体系结构,并在下面解释我的代码

index.aspx.cs:

userBL.cs:

userDL.cs:


当我检查
Response.Write(dt.Rows.Count)的输出时
,它显示的是
0
。因此请帮助我解决此问题。

您的查询字符串在
标记之间似乎有多余的空格。这可能会导致所有问题,因为您的电子邮件前面有空格

使用属性将参数添加到查询中当然更好

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;

配置数据库调用,可能您的跟踪会发现问题首先,一个问题-是否
User\u Email\u ID
确实存储了电子邮件地址?@推断:您可以编辑答案。@AdrianWragg:是的,我的数据库中有字段名
User\u Email\u ID
。其次,一个警告。您正在将用户生成的文本直接传递到数据库e调用,并使自己面临SQL注入攻击。用户名为
”;drop table T_User_Master;--
可能会清除您的users表。
 public DataTable getUserDetails(userBO objUserBO)
        {
           userDL objUserDL = new userDL();
            try
            {
                DataTable dt = objUserDL.getUserDetails(objUserBO);
                return dt;
            }
            catch (Exception e)
            {
                throw e;
            }
        }
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;
            }
        }
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;