【发布时间】:2015-10-05 15:06:17
【问题描述】:
我无法使用 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。所以请帮我解决这个问题。
【问题讨论】:
-
分析您的数据库调用,可能您的跟踪会揭示问题
-
首先,一个问题——
User_Email_ID一定会存储电子邮件地址吗? -
@Infer-On:你能编辑答案吗?
-
@AdrianWragg:是的,我的数据库中有字段名称
User_Email_ID。 -
其次,警告。您将用户生成的文本直接传递给数据库调用,从而使自己面临 SQL 注入攻击。
'; drop table T_User_Master; --的用户名可能会清除您的用户表。