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;
        }我也用过一个参数的去试,可以通过。但两个参数就不行,我可以保证,表中有内容,而且传入的值也是正确的。但为什么查询结果却是空的呢

解决方案 »

  1.   


    if(dt.Rows.Count>0)
    {
    string u = dt.Rows[0]["P_adminame"].ToString();  //此处和下一句报错:在位置 0 处没有任何行。
            string p = dt.Rows[0]["P_adminpwd"].ToString();
    }
      

  2.   

    string u = dt.Rows[0]["P_adminame"].ToString(); 
    string p = dt.Rows[1]["P_adminpwd"].ToString();//这不是1么?
    你数组0都是name了 
      

  3.   


    改ROW[1],意思不就是第二排的吗。而我这些都是第一排的。你说的“数组0都是name”,应该是columns[0]["P_adminame"],这样才是全部都是字段P_adminame吧。我初学的,也不是很懂,不过是这样理解的
      

  4.   

    ROWS是列吧在英文中
    我也是初学的
    你改下试试呗
      

  5.   

    row是行的意思,column,才是列的意思
      

  6.   

    >>
    我也用过一个参数的去试,可以通过。但两个参数就不行,我可以保证,表中有内容,而且传入的值也是正确的。但为什么查询结果却是空的呢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如果两个都有记录,那只能说明一个问题:聋子听哑巴说瞎子看到鬼了...
      

  7.   

    出现这错误肯定是查询不到数据了。
    Response.Write(dt.Rows.Count);
    把dt中的行数输出来看下就明白了。