使用c#asp.net无法从数据库中获取任何行数据。
我无法使用c#asp.net从数据库中获取任何行数据。我正在尝试从我的数据库中获取一行数据,但它不会返回任何行。我正在为此使用3-tire体系结构,并在下面解释我的代码 index.aspx.cs: userBL.cs: userDL.cs:使用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
当我检查
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;