public static void  Open()
    {
        if (mycon.State == ConnectionState.Closed)
        {
            try
            {
                mycon.Open();
            }
            catch (Exception e)
            { throw (e); }
        }
    }
    public static void  Close()
    {
        if (mycon.State == ConnectionState.Open)
        {
            mycon.Close();
        }
    }
这个是打开和关闭的代码
public static bool cmd(string a)
    {
        com = new SqlCommand(a, mycon);
        mycon.Open();
        SqlDataReader sdr = com.ExecuteReader();
        bool result=sdr.Read();
        mycon.Close();
        return result;
    }这个是我用的代码
比如我用了一个 select * from rt 系统第一次说没有RT这个表。如果我再打开的时候,系统就在mycon.Open()这里停下,说 
连接未关闭。连接的当前状态为已打开。这个问题该怎么解决,我希望就算SQL语句出错,下次连接还是正常进行

解决方案 »

  1.   

     mycon.Close(); 
    LZ的mycon是一个什么对象..SqlConnection?还是自定义对象.
      

  2.   

    应该是在sql语句抛出异常的时候你的后面的mycon.Close()没有执行,导致打开的链接无法关闭可以这样:
    try{
     sdr   =   com.ExecuteReader();
                  result=sdr.Read(); 
    }
    catch(Exception ex)
    {
    mycon.Close();
    }
      

  3.   

    你直接用
    try---------catch--------finally,省的写那么复杂。
      

  4.   

    public   static   void     Open() 
            { 
                    if   (mycon.State   ==   ConnectionState.Closed) 
                    { 
                            try 
                            { 
                                    mycon.Open(); 
                            } 
                            catch   (Exception   e) 
                            {   throw   (e);   } 
                            finally
                            {conn.close();}
                    } 
            } 
      

  5.   

    你有没有用public   static   void     Open() 这个方法啊,我看你好像直接用对象打开的。
    public   static   bool   cmd(string   a)
            {
                    com   =   new   SqlCommand(a,   mycon);
                    mycon.Open();// Open();
                    SqlDataReader   sdr   =   com.ExecuteReader();
                    bool   result=sdr.Read();
                    mycon.Close();// Close();
                    return   result;
            }这个是我用的代码 
      

  6.   

    要保证数据库连接在操作完成后一定关闭,一般写到using块里面或者用 
    try
    {
    //...
    }
    catch
    {
    //...
    }
    finally
    {
    sqlconnection.close();
    }