我把连接数据库的代码做成了一个类。现在的问题是如何在frm中使用完再关闭它!
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
namespace WindowsApplication1.DoDatabase
{
    class ConDb
    {
        //连接数据库
        public static OleDbConnection Getconnection()
        {
            
            string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\程序\考勤\att2000.mdb";
            OleDbConnection con=new OleDbConnection(con_str);
            con.Open();
            return con;        
               
        }
        //返回一个表
        public static DataTable GetDataTable(string con_str)
        {
            OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str,Getconnection());
            DataTable con_table = new DataTable();
            con_ad.Fill(con_table);
            return con_table;
           
        }
        //关闭连接
       
       
    }
}

解决方案 »

  1.   

    再写一个方法后。con就不能用了!如何关闭?
      

  2.   

    可以将OleDbConnection con设置为一个属性。
    在form调用类属性。close方法关闭
    也可以在你写的数据库操作类ConDb中写个关闭的方法掉用一下con。close()
      

  3.   

            public static DataTable GetDataTable(string con_str)
            {
                OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str,Getconnection());
                DataTable con_table = new DataTable();
                con_ad.Fill(con_table);
                return con_table;
                       //关闭连接
            }
      

  4.   

    class ConDb
        {
          
    private static OleDbConnection _Conn;        //连接数据库
            public static OleDbConnection Getconnection()
            {
                
                string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\程序\考勤\att2000.mdb";
                _Conn=new OleDbConnection(con_str);
                _Conn.Open();
                return _Conn;        
                   
            }
            //返回一个表
            public static DataTable GetDataTable(string con_str)
            {
                OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str,Getconnection());
                DataTable con_table = new DataTable();
                con_ad.Fill(con_table);
                return con_table;
               
            }
            //关闭连接
    public static void CloseConn()
    {
      _Conn.Close();
    }
      

  5.   

    DataTable不依赖链接,Fill之后就可以关。
      

  6.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OleDb;
    using System.Windows.Forms;
    namespace WindowsApplication1.DoDatabase
    {
        class ConDb
        {
           private OleDbConnection con;
            //连接数据库
            public static OleDbConnection Getconnection()
            {
                
                string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\程序\考勤\att2000.mdb";
                con=new OleDbConnection(con_str);
                con.Open();
                return con;        
                   
            }
            //返回一个表
            public static DataTable GetDataTable(string con_str)
            {
                OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str,Getconnection());
                DataTable con_table = new DataTable();
                con_ad.Fill(con_table);
                return con_table;
               
            }
            //关闭连接
            public static void closeconnection()
            {      
                con.close();         
            }       
        }
    }
      

  7.   

    当你得到数据return之后关闭就行了,没必要在你的frm中关闭吧
      

  8.   

    用sqldataadapter时,当填充完ds之后,会自动关闭连接的
      

  9.   

    Getconnection返回连接,最好不要自己打开连接。
    其它需要打开连接的方法中,用try...catch...finally,finally中关闭连接。
    GetDataTable()方法中适配器会自动维护连接状态,可以不需要手动打开再关闭
      

  10.   

    适配器不需要去显示的打开和关闭连接的,只有SqlCommand需要显示的去打开连接,你的GetConnection()不需要去打开连接,我在你的代买上做了适当的修改,你看下using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OleDb;
    using System.Windows.Forms;
    namespace WindowsApplication1.DoDatabase
    {
        class ConDb
        {
            //连接数据库
            public static OleDbConnection Getconnection()
            {            string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\程序\考勤\att2000.mdb";
                OleDbConnection con = new OleDbConnection(con_str);
                return con;        }
            //返回一个表
            public static DataTable GetDataTable(string con_str)
            {
                OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str, Getconnection());
                DataTable con_table = new DataTable();
                con_ad.Fill(con_table);
                return con_table;        }
            //  事例
            public static int Insert(string sql)
            {
                int result;
                OleDbCommand cmd = new OleDbCommand(sql, Getconnection());
                cmd.Connection.Open();
                result = cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                return result;
            }
        }
    }
      

  11.   


    OleDbConnection con=new OleDbConnection(con_str);
    定义为类的成员变量,不在方法中定义就可以了。
      

  12.   

    另外一种方法是让SqlDataAdapter自动处理,该类在处理数据请求以后,保留连接原本的状态。
    例如连接原来是关闭的,它会在读取数据前,自动打开连接,然后读取数据完毕后,关闭连接,使其恢复到原本关闭的状态。所以你可以不手工打开连接,让SqlDataAdapter自动处理