c#连接access数据库操作类分享


在C#中连接并操作Microsoft Access数据库,通常会用到`System.Data.OleDb`命名空间下的类。下面是一个简单的C#类示例,该类封装了连接到Access数据库(如.mdb或.accdb文件)并执行一些基本数据库操作(如执行SQL查询)的方法。

请注意,为了运行此代码,您需要在项目中引用`System.Data.OleDb`程序集。


using System;
using System.Data;
using System.Data.OleDb;

public class AccessDatabaseHelper
{
    private string connectionString;

    // 构造函数,用于初始化数据库连接字符串
    public AccessDatabaseHelper(string dbPath)
    {
        // 构建Access数据库的连接字符串
        // 注意:如果是.accdb文件(Access 2007及以后版本),则Provider应为Microsoft.ACE.OLEDB.12.0
        // 如果是.mdb文件(Access 2003及以前版本),则Provider为Microsoft.Jet.OLEDB.4.0
        this.connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={dbPath};Persist Security Info=False;";
    }

    // 执行SQL查询并返回DataTable
    public DataTable ExecuteQuery(string sql)
    {
        DataTable dt = new DataTable();
        using (OleDbConnection conn = new OleDbConnection(this.connectionString))
        {
            try
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(sql, conn))
                {
                    using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd))
                    {
                        adapter.Fill(dt);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"An error occurred: {ex.Message}");
            }
        }
        return dt;
    }

    // 执行非查询SQL(如INSERT, UPDATE, DELETE)
    public int ExecuteNonQuery(string sql)
    {
        int rowsAffected = 0;
        using (OleDbConnection conn = new OleDbConnection(this.connectionString))
        {
            try
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(sql, conn))
                {
                    rowsAffected = cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"An error occurred: {ex.Message}");
            }
        }
        return rowsAffected;
    }
}

// 使用示例
// 假设你有一个名为"MyDatabase.accdb"的Access数据库文件
// 并且你想要查询一个名为"Employees"的表
string dbPath = @"C:\path\to\your\database\MyDatabase.accdb";
AccessDatabaseHelper dbHelper = new AccessDatabaseHelper(dbPath);
string query = "SELECT * FROM Employees";
DataTable result = dbHelper.ExecuteQuery(query);

// 你可以遍历result DataTable来查看查询结果
foreach (DataRow row in result.Rows)
{
    Console.WriteLine(row["EmployeeName"].ToString()); // 假设有一列名为EmployeeName
}

这个类包含了两个主要方法:`ExecuteQuery`用于执行SQL查询并返回一个`DataTable`,而`ExecuteNonQuery`用于执行非查询SQL语句(如INSERT、UPDATE、DELETE)并返回受影响的行数。注意,示例中的数据库路径、表名和列名都需要您根据实际情况进行修改。