SqlConnection con = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["carConnectionString"].ToString());
                    {
                        string cmd1 = "select * from powers where username='"+username+"' and power=1";
                        SqlDataAdapter da = new SqlDataAdapter(cmd1, con);
                        DataSet ds = new DataSet();//创建数据集
                        da.Fill(ds);//填充数据集
                        DataTable dt = ds.Tables[0];
                        if (dt.Rows.Count ==0)
                        {
                            Response.Write("<script LANGUAGE='javascript'>alert('您没有权限使用该功能!');window.close();</script>");
                        }
                        cmd1 = "select * from works where username='" + username +"'";
                        da = new SqlDataAdapter(cmd1, con);
                        ds = new DataSet();//创建数据集
                        da.Fill(ds);//填充数据集
                        dt = ds.Tables[0];                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            Label lb = new Label();
                            lb.Text = dt.Rows[i]["wcontain"].ToString().Trim();
                            lb.CssClass = "lbs";
                            lb.Attributes.Add("ondblclick", "justtest()");
                            lb.ID = dt.Rows[i]["wid"].ToString().Trim();
                            this.Panel1.Controls.Add(lb);                        }
                    }------------------------------------------------
像我上面的代码使用起来完全没问题,可是我完全没加入con.Open()语句啊,这样不是数据库没连接上么?为何打开网页却能正确的查找到和显示出数据库里的数据?求指教啊谢谢
话说有人说貌似fill函数会判断数据库连接,如果没有打开会自动打开,是因为这样么???

解决方案 »

  1.   

    构造函数的时候已经分配了连接字符串,SqlDataAdapter会创建数据库连接,如果是SqlConnection对象则直接使用传入的SqlConnection,SqlDataAdapter会自动打开和关闭的.至于关闭,msdn说是保持使用之前的状态,如果使用之前已经打开,那么数据填充完成后也是打开状态,不会自动关闭。
      

  2.   

    da.Fill时会连接
    Fill 方法使用 SELECT 语句从数据源中检索数据。与 Select 命令关联的 IDbConnection 对象必须有效,但不需要将其打开。如果调用 Fill 之前 IDbConnection 已关闭,则将其打开以检索数据,然后再将其关闭。如果调用 Fill 之前连接已打开,它将保持打开状态。
      

  3.   

    Fill方法会判断数据连接的状态,如果没有打开会自动打开,Fill完后Close掉;如果原先打开则直接Fill,然后保持打开状态.
    类似的还有Update方法。
      

  4.   

    在执行数据库操作之前,要conn.Open(),否则执行不了。
      

  5.   

    用DATAADAPTER时,它会默认OPEN
    其它都要手动代码打开