在做登录验证连接sql数据库时总是无法实现正常跳转,不知道什么原因        try
            {                string strCon = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
                //Label3.Text = strCon;
                myConn = new SqlConnection(strCon);
                myConn.Open();//连接数据库                string strcmd = "SELECT * FROM [student] where UserName='" + strname + "' and UserPwd='" + strpwd + "'";                SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn);
                //Label3.Text = strCon;
                sda.Fill(myDataset);  //利用adapter对象把数据集塞到dataset中  (--------这里开始有问题了)                //Label3.Text = strcmd;                if (myDataset.Tables[0].Rows[0] != null)
                {
                    Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
                    Session["UserName"] = TextBox1.Text;
                    Session["UserPwd"] = TextBox2.Text;
                    Response.Redirect("Default2.aspx?dealstr=登录成功");                }
            }
            catch (Exception e1)
            {
                Console.WriteLine(e1.ToString());
                //Label3.Text = "连接出错!" + e1.ToString();
            }
            finally
            {
                myConn.Close();
            }

解决方案 »

  1.   

    SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand(
                queryString, connection);
            adapter.Fill(dataset);
      

  2.   


    SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn); 
    ds = new DataSet();
    sda.Fill(ds);
    myConn.Close();
      

  3.   

                    if (myDataset.Tables["user"].Rows[0]["UserName"] != null) 
                    { 
                        Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString(); 
                        Session["UserName"] = TextBox1.Text; 
                        Session["UserPwd"] = TextBox2.Text; 
                        Response.Redirect("Default2.aspx?dealstr=登录成功");                 } 找了个小miss你看看你填充的 数据是不是null
    因为你没有走这个语句
    Response.Redirect
      

  4.   

    你看看你的dataset里有没有数据,走没走if里面的代码
      

  5.   

    你确定,myDataset有被赋一个初始的 new DataSet();的对象?
      

  6.   

    犯了个低级错误!
    sda.Fill(myDataset,"user");  //利用adapter对象把数据集塞到dataset中  (--------这里开始有问题了)  \
    表明调试时候给删掉了,跟后面不匹配了
      

  7.   

    犯了个低级错误!
    sda.Fill(myDataset,"user");  //利用adapter对象把数据集塞到dataset中  (--------这里开始有问题了)  \
    表名调试时候给删掉了,跟后面不匹配了
      

  8.   

    user ??
    你并没有给dataset起别名呀? 这个user从哪里来?
    sda.Fill(myDataset,"user");  
    试试这样,不过,如果"user" 不行的话,就不要用这个名称,因为在MSsql里这个表名是不可以用的
      

  9.   

    如果 没有数据出现如下错误:
    在位置 0 处没有任何行如果有数据  运行到
    Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString(); 
    出现如下错误:
    未将对象引用设置到对象的实例首先建议你在
    catch (Exception e1) 

    }
    中间加入throw new Exception(e1.Message);  抛出错误其次 如果判断是否存在数据可以这样使用 SqlConnection Conn = new SqlConnection(strConn)
     Conn.Open();
     SqlCommand Comm = new SqlCommand(strSql, Conn);
     SqlDataReader dr = Comm.ExecuteReader();//执行数据库操作,返回所查询的值
     Conn.Close();
     if (dr.Read())//如果读取的到,就说应存在
     {
           …………//加入你所希望的代码
     }
     
     
      

  10.   

    现在发现时犯了个低级错误!
    sda.Fill(myDataset,"user");  表名调试时候给删掉了,跟后面不匹配了。不过又出现了新的问题,验证通过的跳转没有问题,对于没有通过数据库验证的,没有给出响应。
    代码如下,还是找不出错误:
    protected void Button1_Click(object sender, EventArgs e)
        {
            string strname = TextBox1.Text;
            string strpwd = TextBox2.Text;
            DataSet myDataset = null;
            SqlConnection myConn = null;        if (strname != "" & strpwd!= "")
            {
                //region部分:访问数据库,验证用户信息,如果存在该账号和密码,则跳转到defaul2.aspx,若没有,则在Label3提示
                #region
                try
                {                string strCon = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
                    //Label3.Text = strCon;
                    myConn = new SqlConnection(strCon);
                    myConn.Open();//连接数据库                string strcmd = "SELECT * FROM [student] where UserName='" + strname + "' and UserPwd='" + strpwd + "'";                SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn);
                    //sda.SelectCommand = new SqlCommand(strcmd, myConn);                myDataset = new DataSet();
                    sda.Fill(myDataset,"user");  //利用adapter对象把数据集塞到dataset中
                    myConn.Close();
                                    if (myDataset.Tables["user"].Rows[0]!=null)
                    {
                        //Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
                        //Label3.Text = strcmd;
                        Session["UserName"] = strname;
                        Session["UserPwd"] = strpwd;
                        Response.Redirect("Default2.aspx?dealstr=登录成功");                 
                        
                    }
                    else
                    { //这里的代码没有执行                   
                        Label3.Text = "您的输入有误,请重新输入";
                    }
                }
                catch (Exception e1)
                {
                    Console.WriteLine(e1.ToString());
                    //Label3.Text = "连接出错!" + e1.ToString();
                }           
                #endregion     
            }        else
            {
                Response.Redirect("Default2.aspx?dealstr=注册");                }
        }
      

  11.   

    你不应该这么判断 if (myDataset.Tables["user"].Rows[0]!=null) 
    你应该判断,myDataset.Tables["user"].Rows.count>1
      

  12.   

      Response.Redirect("Default2.aspx?dealstr=注册");
    出现问题
    {由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。}
    你试试用下面的代码 替换上面的代码
    Response.Write("<script >{location.href='Default2.aspx?dealstr=注册';}</script>");
      

  13.   

     sda.Fill(myDataset);  //利用adapter对象把数据集塞到dataset中  (--------这里开始有问题了)     
    myDataset没有实例化吧?
    myDataSet=new DataSet();
    sda.Fill(myDataset);
      

  14.   


    这里应该是数据库返回的数据为空,而这个对象并非为null,所以if (myDataset.Tables["user"].Rows[0]!=null)是没有意义的
    你应该判断if (myDataset.Tables["user"].Rows[0].IsNull) 或者 Convert.IsDBNull(myDataset.Tables["user"].Rows[0])
    当然常用的还是myDataset.Tables["user"].Rows.count>0计算是否有返回数据行 
      

  15.   

    你的程序应该是这样写,为False时即有数据时继续执行下去。
    if (!myDataset.Tables["user"].Rows[0].IsNull) 或者if(!Convert.IsDBNull(myDataset.Tables["user"].Rows[0]))