在C SHARP中写了一个联接到数据库的程序.当没有按下button时,在企业管理器中的sql的当前活动中没有找到,数据联接,当按下button时,再在后台去看,发现出现了联接
并且处理sleep状态.问题是我所有的数据库操作都在button的函数体里,并且没有定义全局的数据联接器,
当这个button函数执行后,那么在这个程序内的所有对象都应该析构.这其中也应该包括SqlConnect对象.
在VB6中,在一个函数体定义的记录集,和联接器,一但函数执行完后,再到后台去看,没有发现任何联接,即使是刷新也没有出现,就象从来没有联接过一样.
不知c sharp为何不行.如果行,怎么样才能断开呢?(执行close()方法也不能断开)thanks

解决方案 »

  1.   

    /// <summary>
            /// 执行SQL语句,返回影响的记录数
            /// </summary>
            /// <param name="SQLString"></param>
            /// <returns></returns>
            public int ExecuteSql(string SQLString)
            {
                using (OleDbConnection connection = new OleDbConnection(connectionString))
                {
                    using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))
                    {
                        try
                        {
                            connection.Open();
                            int rows = cmd.ExecuteNonQuery();
                            return rows;
                        }
                        catch (System.Data.OleDb.OleDbException E)
                        {
                            throw new Exception(E.Message);
                        }
                    }
                }
            }
      

  2.   

    /// <summary>
            /// 执行查询语句,返回OleDbDataReader
            /// </summary>
            /// <param name="strSQL"></param>
            /// <returns></returns>
            public OleDbDataReader ExecuteReader(string strSQL)
            {
                using (OleDbConnection connection = new OleDbConnection(connectionString))
                {
                    OleDbCommand cmd = new OleDbCommand(strSQL, connection);
                    OleDbDataReader myReader;
                    try
                    {
                        connection.Open();
                        myReader = cmd.ExecuteReader();
                        return myReader;
                    }
                    catch (System.Data.OleDb.OleDbException e)
                    {
                        throw new Exception(e.Message);
                    }
                    finally
                    {
                        cmd.Dispose();
                        connection.Close();
                    }
                }
            }