public partial class _Default : System.Web.UI.Page
{
    SqlConnection conn = new SqlConnection("Initial Catalog=sy;Data Source=.;integrated Security=true;");
 
  
    protected void Page_Load(object sender, EventArgs e)
    {
     
    }  
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (TextBox1.Text ==""&&DropDownList1.SelectedValue=="")
        { Response.Write("<script language='javascript'>alert('无信息!')</script>"); }
        else
        {
            if (DropDownList1.SelectedValue == "资迅")
            {
                Session["tile"] = TextBox1.Text;
                Response.Redirect("旅游指南.aspx"); }
                if (DropDownList1.SelectedValue == "新闻")
                {
                    Session["tile2"] = TextBox1.Text;
                    Response.Redirect("旅游指南.aspx");
                }
                if (DropDownList1.SelectedValue == "景点")
                { 
                    string url="景点信息.aspx?id="+TextBox1.Text;
                Response.Redirect(url);
            }
                }
    }
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {        try
        {
            conn.Open();
            string mySel = "select * from adm where adim='" + TextBox2.Text.Trim() + "' ";
            SqlCommand com = new SqlCommand(mySel, (SqlConnection)conn);
            SqlDataReader reader = com.ExecuteReader();
            if (!reader.HasRows)
            {
                Response.Write("<script language='javascript'>alert('用户名错误!')</script>");
            }
            else
            {
                while (reader.Read())
                {
                    if (TextBox3.Text.Trim() != reader.GetString(1).Trim())
                        Response.Write("<script language='javascript'>alert('密码错误')</script>");
                    else
                    {
                        Session["adm"] = TextBox2.Text.Trim();
                        Response.Redirect("~/后台/后台.aspx");
                    }
                }
            }
        }
        catch (SqlException)
        {
            Response.Write("<script language='javascript'>alert('在打开连接时出现连接级别的错误!')</script>");
        }
        finally
        {
            if (conn != null)
                conn.Close();
        }
    }
    protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {
        TextBox2.Text = "";
        TextBox3.Text = "";
    }
    protected void ImageButton3_Click(object sender, ImageClickEventArgs e)
    {
        
    if (DropDownList2.SelectedValue == "高级会员")
    {string adim = TextBox4.Text;
    string gpwd = TextBox5.Text;
        try
        {
            conn.Open();
            string mySel = "select * from gjhy where  编号='" + adim + "' ";
            SqlCommand com = new SqlCommand(mySel, (SqlConnection)conn);
            SqlDataReader reader = com.ExecuteReader();
            if (!reader.HasRows)
            {
                Response.Write("<script language='javascript'>alert('用户名错误!')</script>");
            }
            else
            {
                while (reader.Read())
                {
                    if (gpwd != reader.GetString(7).Trim())
                    { Response.Write("<script language='javascript'>alert('密码错误')</script>"); }
                    else
                    {
                        Session["naa"] = TextBox4.Text.Trim();
                        string na;
                        na = Session["naa"].ToString();
                        SqlDataAdapter da = new SqlDataAdapter("select * from gjhy where 编号='" + na + "'", conn);
                        DataSet ds = new DataSet();
                        [color=#FFFF00]da.Fill(ds);
//这里出错
                        if (ds.Tables[0].Rows[0][8].ToString() == "酒店")
                        { Response.Redirect("上传酒店信息.aspx"); }
                        if (ds.Tables[0].Rows[0][8].ToString() == "景点")
                        { Response.Redirect("上传景点信息.aspx"); }
                        if (ds.Tables[0].Rows[0][8].ToString() == "商场")
                        { Response.Redirect("上传商场信息.aspx"); }
                        if (ds.Tables[0].Rows[0][8].ToString() == "旅行社")
                        { Response.Redirect("上传旅游公司信息.aspx"); }[/color]
                    }
                }
            }
        }
        catch (SqlException)
        {
            Response.Write("<script language='javascript'>alert('在打开连接时出现连接级别的错误!')</script>");
        }
        finally
        {
            if (conn != null)
                conn.Close();
        }
    }
    if (DropDownList2.SelectedValue == "普通会员")
    {
        string adim1 = TextBox4.Text;
        string gpwd1 = TextBox5.Text;
        try
        {
            conn.Open();
            string mySel = "select * from hyzc where name='" + adim1 + "' ";
            SqlCommand com = new SqlCommand(mySel, (SqlConnection)conn);
            SqlDataReader reader = com.ExecuteReader();
            if (!reader.HasRows)
            {
                Response.Write("<script language='javascript'>alert('用户名错误!')</script>");
            }
            else
            {
                while (reader.Read())
                {
                    if (gpwd1 != reader.GetString(3).Trim())
                    { Response.Write("<script language='javascript'>alert('密码错误')</script>"); }
                    else
                    { 
                        Session["name"] = TextBox4.Text.Trim();                        Response.Redirect("主页.aspx");                       
                    }
                }
            }
        }
        catch (SqlException)
        {
            Response.Write("<script language='javascript'>alert('在打开连接时出现连接级别的错误!')</script>");
        }
        finally
        {
            if (conn != null)
                conn.Close();
        }
    }
    TextBox4.Text = "";
    DropDownList2.Text = "";
    }
    protected void ImageButton4_Click(object sender, ImageClickEventArgs e)
    {
        if (DropDownList2.SelectedValue == "")
        { Response.Write("<script language='javascript'>alert('请您选择会员类型,谢谢!')</script>"); }
        if (DropDownList2.SelectedValue == "高级会员")
        { Response.Redirect("高级会员注册.aspx"); }
        if (DropDownList2.SelectedValue == "普通会员")
        { Response.Redirect("会员注册.aspx"); }
    }
}

解决方案 »

  1.   

    人家已经说得明明白白了,就是没有关闭dataread前不能再调用数据库的数据了。
      

  2.   


    finally 
            { 
                reader.Close();//加上这句就行了,reader对象每次读取完后要手动关闭
                if (conn != null) 
                    conn.Close(); 
                  
            } 
      

  3.   

    问题不是这个!
                    while (reader.Read()) 
                    { 
                        if (gpwd != reader.GetString(7).Trim()) 
                        {
    *****
    else 
                        { 
    *****
                            SqlDataAdapter da = new SqlDataAdapter("select * from gjhy where 编号='" + na + "'", conn); 
                            DataSet ds = new DataSet(); 
                            da.Fill(ds);这样不就是没有关闭就进行别的数据库操作了吗
      

  4.   

     reader.Close();
    SqlDataAdapter da = new SqlDataAdapter("select * from gjhy where 编号='" + TextBox4.Text.Trim() + "'", conn);
       DataSet ds = new DataSet(); 
       da.Fill(ds);
    先这样改了。。可以运行了
      

  5.   

    好的编程习惯,将所有的打开的对象用完之后立即关闭你哪里用了sqldatareader 用完马上关闭
      

  6.   

    ExecuteReader需要独立使用一个Connection。在使用Connection用于其它之前需要把Reader关闭。
      

  7.   

    if (gpwd != reader.GetString(7).Trim())//这里不打开了没关吗
                        { Response.Write(" <script language='javascript'>alert('密码错误') </script>"); }
                        else
                        {
                          Session["naa"] = TextBox4.Text.Trim();
    .....
      

  8.   

    if (gpwd != reader.GetString(7).Trim())//这里不打开了没关吗
                        { Response.Write(" <script language='javascript'>alert('密码错误') </script>"); }
                        else
                        {
                          Session["naa"] = TextBox4.Text.Trim();
    .....
      

  9.   

    同一个连接只能支持一个reader
      

  10.   

     DataReader 在打开使用时,一个 SqlConnection 只允许打开一个 DataReader,在开启另一个 DataReader 时,必须将前面一个先 Close 掉。 先执行  while (reader.Read()) 关闭后再执行其他操作
    使用 using 关键字,可以将它所定义范围内的对象都释放掉。
      

  11.   

    reader 没有关闭!~在已经取得数据后要及时关闭reader,你用了好几个SqlDataReader reader = com.ExecuteReader();也不好,定义一个全局的,或名称不同的。