Csharp连接Access数据库

/// 
    /// conn 的摘要说明。
    /// 
    public class ConnDbForAcccess
    {
        /// 
        /// 连接数据库字符串
        /// 
        private string connectionString;
        /// 
        /// 存储数据库连接(保护类,只有由它派生的类才能访问)
        /// 
        protected OleDbConnection Connection;
        /// 
        /// 构造函数:带有参数的数据库连接
        /// 
        /// 
        public ConnDbForAcccess(string newConnectionString)
        {
            connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
            connectionString += newConnectionString;
            Connection = new OleDbConnection(connectionString);
        }
        /// 
        /// 获得连接字符串
        /// 
        public string ConnectionString
        {
            get
            {
                return connectionString;
            }
        }
        /// 
        /// 以列表的形式给出已经连接了的数据库中的所有表的表头
        /// 
        /// 数据库中表列表
        public DataTable GetSchemaTable()
        {
            Connection.Open();
            DataTable schemaTable;
            try
            {
                schemaTable = Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null,null,null,"TABLE"});
                //schemaTable = Connection.GetSchema("Tables");
            }
            catch
            {
                schemaTable = null;
            }
            finally
            {
                Connection.Close();
            }
            return schemaTable;
        }
        /// 
        /// 以列表的形式给出数据库中某一张表中的数据列清单
        /// 
        /// 数据列清单列表
        public DataTable GetSchemaColumn(string strTableName)
        {
            Connection.Open();
            DataTable schemaColumn;
            try
            {
                schemaColumn=Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] {null,null,strTableName,null});
            }
            catch
            {
                schemaColumn = null;
            }
            finally
            {
                Connection.Close();
            }
            return schemaColumn;
        }
        /// 
        /// 执行SQL语句返回结果到DataTable中
        /// DataTable[1]  是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO dot net 库中的核心对象。它可以被应用在 VB 和 ASP 上。它无须代码
        /// 就可以简单的绑定数据库。它具有微软风格的用户界面。
        /// 
        /// 
        /// DataTable
        public DataTable ReturnDataTable(string strSQL)
        {
            Connection.Open();
            DataTable dataTable = new DataTable();
            try
            {
                OleDbDataAdapter OleDbDA = new OleDbDataAdapter(strSQL, Connection);
                OleDbDA.Fill(dataTable);
            }
            catch
            {
                dataTable = null;
            }
            finally
            {
                Connection.Close();
            }
            return dataTable;
        }
        /// 
        /// 通过DataTable的形式来更新数据库,这里需要输入更新的数据表表名和用于更新的dataTable
        /// 
        /// 需要更新的数据表名
        /// 用来更新的新的DataTable
        /// 更新成功就返回true,不成功就返回false
        public Boolean UpdateByDataTable(string strTableName, DataTable dataTable)
        {
            Connection.Open();
            try
            {
                OleDbDataAdapter OleDbDA = new OleDbDataAdapter();
                string _tempSQL = "select * from ";
                _tempSQL += strTableName;
                OleDbDA.SelectCommand = new OleDbCommand(_tempSQL,Connection);
                OleDbCommandBuilder builder = new OleDbCommandBuilder(OleDbDA);
                OleDbDA.Update(dataTable);
                return true;
            }
            catch
            {
                return false;
            }
            finally
            {
                Connection.Close();
            }
        }
        /// 
        /// 执行SQL语句没有返回结果,如:执行删除、更新、插入等操作
        /// 
        /// 
        /// 操作成功标志
        public bool ExeSQL(string strSQL)
        {
            bool resultState = false;
            Connection.Open();
            OleDbTransaction myTrans = Connection.BeginTransaction();
            OleDbCommand command = new OleDbCommand(strSQL, Connection, myTrans);
            try
            {
                command.ExecuteNonQuery();
                myTrans.Commit();
                resultState = true;
            }
            catch
            {
                myTrans.Rollback();
                resultState = false;
            }
            finally
            {
                Connection.Close();
            }
            return resultState;
        }
        /// 
        /// 执行SQL语句(读取)返回结果到DataReader中
        /// DataReader对象只允许以只读、顺向的方式查看其中所存储的数据,提供一个非常有效率的数据查看模式,同时DataReader对象还是一种非常节省资源的数据对象。
        /// 
        /// 
        /// dataReader
        public OleDbDataReader ReturnDataReader(string strSQL)
        {
            Connection.Open();
            OleDbDataReader dataReader;
            try
            {
                OleDbCommand command = new OleDbCommand(strSQL, Connection);
                dataReader = command.ExecuteReader();
            }
            catch
            {
                dataReader = null;
            }
            finally
            {
                Connection.Close();
            }
            return dataReader;
        }
        /// 
        /// 执行SQL语句返回结果到DataSet中
        /// DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数
        /// 据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父
        /// 子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。
        /// 
        /// 
        /// DataSet
        public DataSet ReturnDataSet(string strSQL)
        {
            Connection.Open();
            DataSet dataSet = new DataSet();
            try
            {
                OleDbDataAdapter OleDbDA = new OleDbDataAdapter(strSQL, Connection);
                OleDbDA.Fill(dataSet);
            }
            catch
            {
                dataSet = null;
            }
            finally
            {
                Connection.Close();
            }
            return dataSet;
        }
        /// 
        /// 执行一查询语句,同时返回查询结果数目
        /// 
        /// 
        /// sqlResultCount
        public int GetSqlResultCount(string strSQL)
        {
            int sqlResultCount = 0;
            try
            {
                Connection.Open();
                OleDbCommand command = new OleDbCommand(strSQL, Connection);
                OleDbDataReader dataReader = command.ExecuteReader();
                while (dataReader.Read())
                {
                    sqlResultCount++;
                }
                dataReader.Close();
            }
            catch
            {
                sqlResultCount = 0;
            }
            finally
            {
                Connection.Close();
            }
            return sqlResultCount;
        }
    }

Csharp和Access连接的方法写成了一个类,相信会有很多大家可以共用的方法。放在这里分享一下。

你可能感兴趣的:(Csharp)