ui层:
protected void Button1_Click(object sender, EventArgs e)
{
string username = tbusername.Text.Trim();
string userpwd = tbuserpwd.Text.Trim();
DataTable dt = new P_AdminManager().SelectAdmin(username, userpwd);
string u = dt.Rows[0]["P_adminame"].ToString(); //此处和下一句报错:在位置 0 处没有任何行。
string p = dt.Rows[0]["P_adminpwd"].ToString();
}
BLL层:
public DataTable SelectAdmin(string username, string userpwd)
{
return P_dao.SelectAdmin(username, userpwd);
}
DLL层:
public DataTable SelectAdmin(string username, string userpwd)
{
DataTable dt = new DataTable();
string cmdText = "select * from P_Admin where P_adminame=@P_adminame and P_adminpwd=@P_adminpwd";
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter("@P_adminame",username),
new SqlParameter("@P_adminpwd",userpwd)};
dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.Text);
return dt;
}我也用过一个参数的去试,可以通过。但两个参数就不行,我可以保证,表中有内容,而且传入的值也是正确的。但为什么查询结果却是空的呢
if(dt.Rows.Count>0)
{
string u = dt.Rows[0]["P_adminame"].ToString(); //此处和下一句报错:在位置 0 处没有任何行。
string p = dt.Rows[0]["P_adminpwd"].ToString();
}
string p = dt.Rows[1]["P_adminpwd"].ToString();//这不是1么?
你数组0都是name了
改ROW[1],意思不就是第二排的吗。而我这些都是第一排的。你说的“数组0都是name”,应该是columns[0]["P_adminame"],这样才是全部都是字段P_adminame吧。我初学的,也不是很懂,不过是这样理解的
我也是初学的
你改下试试呗
我也用过一个参数的去试,可以通过。但两个参数就不行,我可以保证,表中有内容,而且传入的值也是正确的。但为什么查询结果却是空的呢1) 在下面段码处做一个断点,调试一下,看看DT里面有没有行
var i = dt.Rows.Count();
string u = dt.Rows[0]["P_adminame"].ToString(); //此处和下一句报错:在位置 0 处没有任何行。2) 把username, userpwd应用下面的SQL,看一下,在SQL查询里面有没有记录
select * from P_Admin where P_adminame=@P_adminame and P_adminpwd=@P_adminpwd如果两个都有记录,那只能说明一个问题:聋子听哑巴说瞎子看到鬼了...
Response.Write(dt.Rows.Count);
把dt中的行数输出来看下就明白了。