我用.net3.5 做C# WINFORM,数据库是SQL2005SqlConnection conn = new SqlConnection("链接字符串");
conn.Open(); //打开之后我去数据库的活动监视器看,看到多了一个进程是我刚刚建立的连接
conn.Close();  //问题出在这里,我执行了关闭,但是那个进程却没有结束,
//最后我点右上角X把程序关闭,数据库才结束这个进程。
然后我有这样写qlConnection conn = new SqlConnection("链接字符串");
conn.Open(); 
qlConnection conn1 = new SqlConnection("链接字符串");
conn1.Open();  //去SQL2005进程看就多了两条,一共2个进程了,
//但是执行close()这两个进程一个也没有关闭上面是第一个问题,想不明白求解答
----------------------------------

解决方案 »

  1.   

    Close 方法回滚任何挂起的事务。然后,它将连接释放到连接池,或者在连接池被禁用的情况下关闭连接。
    Close 没有真正的断开,他们还在连接池里,杀死进程是可行的。
      

  2.   

    用SQLSERVER.enumprocess得到连接到数据库的所有进程,然后用killprocess方法把这些进程全关闭就行。
      

  3.   

    很显然,数据库的状态只是close,并没有销毁,你可以调用dispose方法来查看有什么变化。
      

  4.   

    还有个问题上面没写完,SqlConnection conn = new SqlConnection("链接字符串");
    SqlCommond cmd = SqlCommond cmd("SQL语句",conn);
    Adpter ap = new Adpter(cmd);
    DataTable dt = new DataTable();
    ap.fill(dt);  //问题是我这段里并没有打开CONN.OPEN,为什么结果dt里有数据呢,按说应该没
      

  5.   

    dt里肯定有啊,conn没打开只是没有和数据库连接,你的dt又不是数据库里的,是临时表
      

  6.   

    因为SqlDataAdapter会自动打开和关闭连接
      

  7.   

    你好 请问你是不是在用C#做一个软件来控制mysql?额 我现在也被公司安排做这样一个软件。能沟通下经验么?
      

  8.   

    我1楼有说 我是弄SQL2005 不是MYSQL
      

  9.   


    是这样的。
    人家都close了,跟dispose有啥关系?通常你要在知道dispose内部执行什么操作之后才使用它,不要以为它是包治百病的香炉灰。
      

  10.   

    前边的问题,请了解连接池的机制先。http://bbs.csdn.net/topics/390535249?page=1#post-395197282
      

  11.   

    SqlConnection conn = new SqlConnection("链接字符串");
    conn.Open(); //打开之后我去数据库的活动监视器看,看到多了一个进程是我刚刚建立的连接
    conn.Close();  //问题出在这里,我执行了关闭,但是那个进程却没有结束,
    //最后我点右上角X把程序关闭,数据库才结束这个进程。
    你在数据库中看到的是连接池连接,连接池是一个进程或依附进程,App中的connection虽然close了,但App的进程仍然存在,连接池并未销毁,所以数据库仍保留连接池,这样做的好处之一是,以便下次你再次open,会缩短连接的耗时,你要知道,数据库的首次连接有很多操作会非常耗时第二个问题和第一个问题是一样的答案...
      

  12.   

    Quote: 引用 4 楼 beyond789654 的回复:

    还有个问题上面没写完,SqlConnection conn = new SqlConnection("链接字符串");
    SqlCommond cmd = SqlCommond cmd("SQL语句",conn);
    Adpter ap = new Adpter(cmd);
    DataTable dt = new DataTable();
    ap.fill(dt);  //问题是我这段里并没有打开CONN.OPEN,为什么结果dt里有数据呢,按说应该没[/quote如果调用SqlDataAdapter的Fill方法,并且其SelectCommand属性的SqlConnection是关闭状态,则SqlDataAdapter会自动打开它,然后提交查询,获取结果,最后关闭连接。如果在调用Fill方法前,SqlConnection是打开的,则查询执行完毕后,SqlConnection还将是打开的,也就是说SqlDataAdapter会保证SqlConnection的状态恢复到原来的情形。