C#读取MDB数据

       昨天收到一个Order要在.Net中读取Access数据库(MDB文件)的数据,经过问度娘找了篇《C#操作Access之读取mdb浅析》,并已参照实现了具体功能,但发现里面用OleDbCommand和OleDbDataReader 读取、组合出来的Table数据字段都是String型(崩溃中。。。)。所幸Simon建议用OleDbDataAdapter, 用OleDbDataAdapter不仅写法简单,字段的数据类型也不会掉失。

类源码
using System.Data;
using System.Data.OleDb;

        private class MDBHelp
        {
            private string _fileName;
            private string _connectionString;
            private OleDbConnection _odcConnection;


            /// <summary>
            /// 构建函数
            /// </summary>
            /// <param name="fileName">MDB文件(含完整路徑)</param>
            public MDBHelp(string fileName)
            {
                this._fileName = fileName;
                this._connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";";
            }


            /// <summary>
            /// 建立连接(打开数据库文件)
            /// </summary>
            public void Open()
            {
                try
                {
                    // 建立连接
                    this._odcConnection = new OleDbConnection(this._connectionString);


                    // 打开连接
                    this._odcConnection.Open();
                }
                catch (Exception)
                {
                    throw new Exception("嘗試打开 " + this._fileName + " 失敗, 請確認文件是否存在!");
                }
            }


            /// <summary>
            /// 断开连接(关闭据库文件)
            /// </summary>
            public void Close()
            {
                this._odcConnection.Close();
            }


            /// <summary>
            /// 根据sql命令返回一个DataSet
            /// </summary>
            /// <param name="sql">sql命令</param>
            /// <returns>以DataTable形式返回数据</returns>
            public DataSet GetDataSet(string sql)
            {
                DataSet ds = new DataSet();


                try
                {
                    OleDbDataAdapter adapter = new OleDbDataAdapter(sql, this._odcConnection);
                    adapter.Fill(ds);
                }
                catch (Exception)
                {
                    throw new Exception("sql語句: " + sql + " 執行失敗!");
                }


                return ds;
            }
        }        

调用方法:
            string mdbFile = "p:\\EvenYYMM.mdb";           //默認路徑

            MDBHelp mdbHelp = new MDBHelp(mdbFile);
            try
            {
                mdbHelp.Open();     // 打開數據庫

                var ds1 = mdbHelp.GetDataSet("select count(*) as n1 from even where id > " + last_id.ToString());

                var ds = mdbHelp.GetDataSet("select to 10 * from even where Id >= 100 order by id");

                mdbHelp.Close();    // 關閉數據庫
            }
            finally
            {
                mdbHelp = null;
            }



  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值