C#连接Access数据库的两种实现方式详解

Noah
Noah
发布时间:2026-10-14 | 3人浏览过
原创

本文介绍了C#如何通过OleDb组件连接Access (.mdb) 数据库,涵盖从基础的环境准备到在WinForm应用中展示数据和在控制台程序中读取数据的完整流程。重点展示了`OleDbConnection`和`OleDbDataAdapter`的使用细节。

开发前准备

在进行C#与Access数据库交互之前,需要准备以下环境要素:

  • 开发环境:Visual Studio 及 .NET Framework 支持。
  • 依赖组件:必须引用 System.Data.OleDb 命名空间以访问数据库相关类。
  • 数据源位置:Access数据库文件(如 xxx.mdb)通常放置在程序的运行目录下(例如 Debug 或 Release 文件夹中),或者使用绝对路径明确指向文件位置。

场景一:WinForm窗体显示数据库表内容

本部分演示如何在 Windows 窗体应用程序中,点击按钮后利用 DataSet 和 DataGridView 控件将 Access 表的数据显示在界面上。

第1步:界面设计

打开 WinForm 项目,在界面上拖入一个 Button 控件用于触发操作,并添加一个 DataGridView 控件用于后续的数据展示。

第2步:引入命名空间

双击窗体进入代码编辑页,在顶部引入数据库操作所需的命名空间:

using System.Data.OleDb;

第3步:编写按钮点击事件代码

双击“按钮”控件进入事件处理函数,按照以下逻辑编写代码建立连接、填充数据并绑定控件:

OleDbConnection strConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "员工信息.mdb" + ";Persist Security Info=False");
// 注意:数据文件需存在于DEBUG目录下

OleDbDataAdapter myda = new OleDbDataAdapter("select * from 雇员", strConnection);
DataSet myds = new DataSet();
myda.Fill(myds, "联系人ID"); // 填充数据集,指定生成的DataTable名称

dataGridView1.DataSource = myds.Tables["联系人ID"];

执行上述代码后,点击按钮即可看到 dataGridView1 中显示了数据库中“雇员”表的数据。

场景二:控制台应用读取并输出数据

除了图形界面,有时我们需要在控制台程序中直接获取并处理数据流。这里演示如何使用 Command 和 Reader 对象逐行读取 Access 中的数据。

第1步:初始化连接与命令对象

在控制台的 Main 方法中,定义连接字符串并尝试建立连接。建议使用 `try-finally` 块确保资源关闭。

第2步:执行查询并遍历结果

创建 SQL 查询语句,通过 ExecuteReader() 获取读取器,并使用循环读取每一行的指定列数据:

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

namespace ConsoleApplication19
{
    class Program
    {
        static void Main(string[] args)
        {
            OleDbConnection mycon = null;
            OleDbDataReader myReader = null;
            try
            {
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db4.mdb;";
                mycon = new OleDbConnection(strcon);
                mycon.Open();
                string sql = "select * from 雇员 ";
                OleDbCommand mycom = new OleDbCommand(sql, mycon);
                myReader = mycom.ExecuteReader();
                while (myReader.Read())
                {
                    // 按索引顺序获取列值,请根据实际数据库字段调整
                    Console.WriteLine(
                        myReader.GetString(0) + " " + 
                        myReader.GetDouble(1) + " " + 
                        myReader.GetString(2) + " " + 
                        myReader.GetString(3) + " " + 
                        myReader.GetString(4)
                    );
                }
            }
            finally
            {
                if (myReader != null) myReader.Close();
                if (mycon != null) mycon.Close();
            }
        }
    }
}

运行该项目,控制台窗口将会依次打印出表中每一行对应列的内容。

关键注意事项与排错

在实际操作中,若遇到连接失败,请重点检查以下几点:

  1. 提供者版本差异:上述代码使用的是 Microsoft.Jet.OLEDB.4.0,这仅适用于 32位环境的旧版 Access 文件(.mdb)。如果涉及 64位系统或 .accdb 格式,需要更换为正确的 Provider(如 ACE OLEDB)或修改项目的平台目标。
  2. 路径问题:确保代码中引用的 Data Source 文件名准确无误,且该文件确实存在于程序运行的当前目录中。
  3. 字段索引匹配:在控制台读取部分,GetString(0)、GetDouble(1) 等索引号必须与数据库表中实际的物理列顺序一致,否则可能导致类型转换异常或读取错位。

以上就是C#连接Access数据库实现数据的详细教程,更多关于C#数据库操作的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表