zoukankan      html  css  js  c++  java
  • C# 对Access数据库操作的通用类

    (转载自博主Jerry很简单

    //Access数据库-C# 操作类 代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.OleDb;
    using System.Data;

    namespace XXX
    {
        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')"));
    //}

        }
    }

  • 相关阅读:
    Android应用程序执行流程
    Android的架构与Android应用程序启动流程
    Android开发环境使用工具Eclipse IDE工程目录结构
    MySQL 的 crash-safe 原理解析
    vivo 悟空活动中台
    图解 Promise 实现原理(三)—— Promise 原型方法实现
    领域驱动设计(DDD)实践之路(三):如何设计聚合
    深入浅出开源监控系统Prometheus(上)
    你还应该知道的哈希冲突解决策略
    反应式编程 RxJava 设计原理解析
  • 原文地址:https://www.cnblogs.com/baofengyu/p/5956760.html
Copyright © 2011-2022 走看看