操作Access數據庫的C#封裝類

gd7g 9年前發布 | 1K 次閱讀 C#

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

namespace AccessOperator { class AccessHelper { private string conn_str = null; private OleDbConnection ole_connection = null; private OleDbCommand ole_command = null; private OleDbDataReader ole_reader = null; private DataTable dt = null;

    /// <summary>
    /// 構造函數
    /// </summary>
    public AccessHelper()
    {
        conn_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\我的文檔\Visual Studio 2008\Projects\AccessOperator\AccessOperator\bin\Debug\myDb.mdb'";
        InitDB();
    }

    private void InitDB()
    {
        ole_connection = new OleDbConnection(conn_str); //創建實例
        ole_command = new OleDbCommand();
    }

    /// <summary>
    /// 構造函數
    /// </summary>
    /// <param name="db_path">數據庫路徑</param>
    public AccessHelper(string db_path)
    {
        conn_str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + db_path + "'";
        InitDB();
    }

    /// <summary>
    /// 轉換數據格式
    /// </summary>
    /// <param name="reader">數據源</param>
    /// <returns>數據列表</returns>
    private DataTable ConvertOleDbReaderToDataTable(ref OleDbDataReader reader)
    {
        DataTable dt_tmp = null;
        DataRow dr = null;
        int data_column_count = 0;
        int i = 0;

        data_column_count = reader.FieldCount;
        dt_tmp = BuildAndInitDataTable(data_column_count);

        if (dt_tmp == null)
        {
            return null;
        }

        while (reader.Read())
        {
            dr = dt_tmp.NewRow();

            for (i = 0; i < data_column_count; ++i)
            {
                dr[i] = reader[i];
            }

            dt_tmp.Rows.Add(dr);
        }

        return dt_tmp;
    }

    /// <summary>
    /// 創建并初始化數據列表
    /// </summary>
    /// <param name="Field_Count">列的個數</param>
    /// <returns>數據列表</returns>
    private DataTable BuildAndInitDataTable(int Field_Count)
    {
        DataTable dt_tmp = null;
        DataColumn dc = null;
        int i = 0;

        if (Field_Count <= 0)
        {
            return null;
        }

        dt_tmp = new DataTable();

        for (i = 0; i < Field_Count; ++i)
        {
            dc = new DataColumn(i.ToString());
            dt_tmp.Columns.Add(dc);
        }

        return dt_tmp;
    }

    /// <summary>
    /// 從數據庫里面獲取數據
    /// </summary>
    /// <param name="strSql">查詢語句</param>
    /// <returns>數據列表</returns>
    public DataTable GetDataTableFromDB(string strSql)
    {
        if (conn_str == null)
        {
            return null;
        }

        try
        {
            ole_connection.Open(); //打開連接

            if (ole_connection.State == ConnectionState.Closed)
            {
                return null;
            }

            ole_command.CommandText = strSql;
            ole_command.Connection = ole_connection;

            ole_reader = ole_command.ExecuteReader(CommandBehavior.Default);

            dt = ConvertOleDbReaderToDataTable(ref ole_reader);

            ole_reader.Close();
            ole_reader.Dispose();
        }
        catch (System.Exception e)
        {
            Console.WriteLine(e.ToString());
        }
        finally
        {
            if (ole_connection.State != ConnectionState.Closed)
            {
                ole_connection.Close();
            }
        }

        return dt;
    }

    /// <summary>
    /// 執行sql語句
    /// </summary>
    /// <param name="strSql">sql語句</param>
    /// <returns>返回結果</returns>
    public int ExcuteSql(string strSql)
    {
        int nResult = 0;

        try
        {
            ole_connection.Open(); //打開數據庫連接
            if (ole_connection.State == ConnectionState.Closed)
            {
                return nResult;
            }

            ole_command.Connection = ole_connection;
            ole_command.CommandText = strSql;

            nResult = ole_command.ExecuteNonQuery();
        }
        catch (System.Exception e)
        {
            Console.WriteLine(e.ToString());
            return nResult;
        }
        finally
        {
            if (ole_connection.State != ConnectionState.Closed)
            {
                ole_connection.Close();
            }
        }

        return nResult;
    }

    static void Main(string[] args)
    {
        AccessHelper Helper = new AccessHelper();
        DataTable dt = Helper.GetDataTableFromDB("select * from test");

        foreach (DataRow dr in dt.Rows)
        {
            Console.WriteLine(dr[0].ToString()+" "+dr[1].ToString());
        }

        Console.WriteLine(Helper.ExcuteSql("insert into test(test) values ('hello')"));
    }
}

}</pre>

 本文由用戶 gd7g 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!