try
{
mycon.Open(); //mycon是SqlClient.SqlConnection对象
MessageBox.Show(mycon.Database.ToString()   +"|"+mycon.WorkstationId.ToString());
}
catch(Exception f)
{
MessageBox.Show(f.Message);
}
finally
{
mycon.Close();

}
每次执行完数据库操作就执行关闭语句

解决方案 »

  1.   

    我用SQL事件探查器分析过的,其实没有真正关闭SQL连接,只是.net程序中关闭了SQL的操作吧
      

  2.   

    private void Open_Click(object sender, System.EventArgs e)
    {
    try
    {
    mycon.Open(); //mycon是SqlClient.SqlConnection对象
    MessageBox.Show(mycon.Database.ToString()   +"|"+mycon.WorkstationId.ToString());
    }
    catch(Exception f)
    {
    MessageBox.Show(f.Message);
    }
    }private void Close_Click(object sender, System.EventArgs e)
    {
    mycon.Close();//这个写错了地方
    }---------------------------------------------------------------------------------------private void Open_Click(object sender, System.EventArgs e)
    {
    try
    {
    mycon.Open(); //mycon是SqlClient.SqlConnection对象
    MessageBox.Show(mycon.Database.ToString()   +"|"+mycon.WorkstationId.ToString());
    }
    catch(Exception f)
    {
    MessageBox.Show(f.Message);
    }
             finally{}
             mycon.Close();
    }private void Close_Click(object sender, System.EventArgs e)
    {

    }
    以上是改过的,你试试。
      

  3.   

    我的程序之所以把mycon.Open()和mycon.Close()分开,放到两个事件里,就是要用事件探测器,探测open和close后的状态的分别。
      

  4.   

    要不你在第一个程序里加上一个finally{}试试
      

  5.   

    dispose() is not WAN LING DAN
      

  6.   

    我提这个问题是为了实现在数据库还原前,断开对数据库的连接。是不是还有其它还原数据库的办法(在sql server中还原除外)。
      

  7.   

    回复人: gymls2003(三月里的小雨) ( ) 信誉:100  2004-10-22 10:54:00  得分: 0  
     
     
       我觉的应该是没有关闭吧,因为你连接的时候存在连接池的问题,你关闭了,但是连接的对象还在池中,它是在等待下次的重新调用连接,这样会提高程序效率.
      
     
    但是mycon.dispose()还是不行呀
      

  8.   

    是没有关闭的,因为ado.net自动会启动连接池(在connectionstring中指定,默认情况下启动的)。
      

  9.   

    我明白了,你要把连接对象声明为全局的public static SqlConncetion conn=nwe SqlConnection("......");这个才可以在不同的程序里用。