在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)并返回受影响的行数。注意,示例中的数据库路径、表名和列名都需要您根据实际情况进行修改。