C#类 连接接ACCESS数据库类

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;

namespace ZXF
{
    class FK_ACCESS : IDisposable
    {


        /// <summary>
        /// 保护变量,数据库连接。
        /// </summary>
        protected System.Data .OleDb .OleDbConnection Connection;

        /// <summary>
        /// 保护变量,数据库连接串。
        /// </summary>
        protected String ConnectionString;

        /// <summary>
        /// 构造函数。
        /// </summary>
        /// <param name="path">数据库完全路径</param>
        public FK_ACCESS(string path )
        {
            //
            ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" + path;
            //
        }

        /// <summary>
        /// 析构函数,释放非托管资源
        /// </summary>
        ~FK_ACCESS()
        {
            try
            {
                if (Connection != null)
                    Connection.Close();
            }
            catch(Exception e)
            {
                
            }
            try
            {
                Dispose();
            }
            catch{}
        }

        /// <summary>
        /// 保护方法,打开数据库连接。
        /// </summary>
        protected void Open() 
        {
            if (Connection == null)
            {
                try
                {
                    Connection = new  OleDbConnection(ConnectionString);
                }
                catch(Exception e)
                {
                    
                }
            }
            if (Connection.State.Equals(ConnectionState.Closed))
            {
                try
                {
                    Connection.Open();
                }
                catch(Exception e)
                {
                    
                }
            }
        }

        /// <summary>
        /// 公有方法,关闭数据库连接。
        /// </summary>
        public void Close() 
        {
            try
            {
                if (Connection != null)
                    Connection.Close();
            }
            catch(Exception e)
            {
                
            }
        }

        /// <summary>
        /// 公有方法,释放资源。
        /// </summary>
        public void Dispose() 
        {
            // 确保连接被关闭
            try
            {
                if (Connection != null) 
                {
                    Connection.Dispose();
                    Connection = null;
                }    
            }
            catch(Exception e)
            {
                
            }
        }
        /// <summary>
        /// 公有方法,获取数据,返回一个OleDbDataReader (调用后主意调用SqlDataReader.Close())。
        /// </summary>
        /// <param name="OleDbString">Sql语句</param>
        /// <returns>OleDbDataReader</returns>
        public OleDbDataReader GetDataReader(String SqlString)
        {
            Open();
            try
            {
                OleDbCommand cmd = new OleDbCommand(SqlString,Connection);
                return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                 #if DEBUG
                
                 #endif
            }
            catch(Exception e)
            {
                return null;
            }
        }

        /// <summary>
        /// 公有方法,获取数据,返回一个DataSet。
        /// </summary>
        /// <param name="SqlString">SQL语句</param>
        /// <returns></returns>
        public DataSet GetDataSet(String SqlString)
        {
            DataSet dataset = new DataSet();
            Open();
            try
            {
                OleDbDataAdapter adapter = new OleDbDataAdapter(SqlString,Connection);
                adapter.Fill(dataset);
                #if DEBUG
        
                #endif
            }
            catch(Exception e)
            {
            }
            finally
            {
                Close();
            }
            return dataset;
        }
        /// <summary>
        /// 公有方法,获取数据,返回一个DataRow。
        /// </summary>
        /// <param name="SqlString">SQL语句</param>
        /// <returns>DataRow</returns>
        public DataRow GetDataRow(String SqlString)
        {
            DataSet dataset = GetDataSet(SqlString);
            dataset.CaseSensitive = false;
            if (dataset.Tables[0].Rows.Count>0)
            {
                return dataset.Tables[0].Rows[0];
            }
            else
            {
                return null;
            }
        }
        /// <summary>
        /// 读取表库:DataTable
        /// </summary>
        /// <param name="ACC_SQL">SQL语句</param>
        /// <returns></returns>
        public DataTable ReadTable(string ACC_SQL)
        {
            Open();
            DataSet RegSet = new DataSet();
            OleDbDataAdapter RegAdapter = new OleDbDataAdapter(ACC_SQL, ConnectionString);
            OleDbCommandBuilder abcd = new OleDbCommandBuilder(RegAdapter);
            RegAdapter.Fill(RegSet, ACC_SQL);
            Close();
            return RegSet.Tables[ACC_SQL];
        }

        /// <summary>
        /// 读取表行:DataRow;
        /// </summary>
        /// <param name="ACC_SQL">SQL语句</param>
        /// <returns></returns>
        public DataRow ReadRow(string ACC_SQL)
        {
            Open();
            DataSet RegSet = new DataSet();
            OleDbDataAdapter RegAdapter = new OleDbDataAdapter(ACC_SQL, ConnectionString);
            OleDbCommandBuilder abcd = new OleDbCommandBuilder(RegAdapter);
            RegAdapter.Fill(RegSet, ACC_SQL);
            Close();
            return RegSet.Tables[ACC_SQL].Rows[0];
        }
        /// <summary>
        /// 更新数据:TDN[i] 是字段;TDS[i]是值;字段数;SQL语句
        /// </summary>
        /// <param name="TDN">字段名称</param>
        /// <param name="TDS">字段数值</param>
        /// <param name="S">字段数</param>
        /// <param name="ACC_SQL">SQL语句</param>
        /// <returns></returns>
        public bool UpRow( string[] TDN ,string[] TDS,int S, string ACC_SQL )
        {
            try
            {
                Open();
                DataSet RegSet=new DataSet();
                OleDbDataAdapter RegAdapter=new OleDbDataAdapter(ACC_SQL,ConnectionString);
                OleDbCommandBuilder  abcd=new OleDbCommandBuilder (RegAdapter);
                RegAdapter.Fill(RegSet, ACC_SQL);
                int c = RegSet.Tables[ACC_SQL].Rows.Count;
                for (int h=0;h<c;h++ )
                {
                    RegSet.Tables[ACC_SQL].Rows[h].BeginEdit();
                    for (int i=0 ;i<S;i++)
                    {
                        RegSet.Tables[ACC_SQL].Rows[h][TDN[i]] = TDS[i];
                    }
                    RegSet.Tables[ACC_SQL].Rows[h].EndEdit();
                }
                RegAdapter.Update(RegSet, ACC_SQL);
                Close() ;
                return true;
            }
            catch(Exception e)
            {
                Close() ;
                return false;
            }
        }
        /// <summary>
        /// 添加数据:TDN[i] 是字段;TDS[i]是值;字段数;SQL语句
        /// </summary>
        /// <param name="TDN">字段名称</param>
        /// <param name="TDS">字段数值</param>
        /// <param name="S">字段数</param>
        /// <param name="ACC_SQL">SQL语句</param>
        /// <returns></returns>
        public bool AddRow( string[] TDN ,string[] TDS,int S, string ACC_SQL )
        {
            try
            {
                Open();
                DataSet RegSet=new DataSet();
                OleDbDataAdapter RegAdapter=new OleDbDataAdapter (ACC_SQL,ConnectionString);
                OleDbCommandBuilder  abcd=new OleDbCommandBuilder (RegAdapter);
                RegAdapter.Fill (RegSet,ACC_SQL);
                DataRow Row=RegSet.Tables [ACC_SQL].NewRow ();
                for (int i=0 ;i<S;i++)
                {
                    Row[TDN[i]]=TDS[i];
                }
                RegSet.Tables[ACC_SQL].Rows.Add(Row); 
                RegAdapter.Update(RegSet,ACC_SQL);
                Close() ;
                return true;
            }
            catch(Exception e)
            {
                Close() ;
                return false;
            }
        }


    
        /// <summary>
        /// 执行SQL语句,返回成功数量
        /// </summary>
        /// <param name="ACC_SQL"></param>
        /// <returns></returns>
        public int  ACC_SQL(string ACC_SQL) 
        {
            Open();
            int i=-1;
            OleDbCommand myCommand =new  OleDbCommand(ACC_SQL,Connection);
            try
            {
              i = myCommand.ExecuteNonQuery();
            }
            catch (Exception e )
            {
            }
            Close();
            return i;
        }


        //结束
    }
}
 

猜你喜欢

转载自blog.csdn.net/fkzxf/article/details/105511231