C# winform读写Access数据库简单示例
最近在做使用C#访问Access数据库的项目,之前没有使用过Access,所以中间查了不少资料,对相关操作有了一个简单的印象。本文简单介绍如何使用C#读取Access数据,并将修改重新保存回Access。
开发环境(winform):
1. visual studio 2019
2. .net framework 4.7.2
3. access 2007
4. access数据表tn_member,表结构内容如下图:
几个类介绍:
1. OleDBConnection:表示与数据源的开放连接,这个类就像access数据库与外部的一个接口,外部程序的操作都通过此接口
2. OleDbDataAdapter:用于从access数据源检索数据并填充 DataSet 中的表,同时 DataAdapter 还将对 DataSet 的更改解析回数据源。
3. OleDbCommandBuilder:自动生成用于协调所做的更改命令,它能够根据OleDbDataAdapter的SelectCommand属性自动的生成InsertCommand,UpdateCommand与DeleteCommand等命令。
它们的关系可以用下图表示:
读写流程:
1. 使用连接字符串,构造OleDbConnection对象,同时调用open方法打开连接
2. 使用connection对象,构造OleDbDataAdapter适配器对象
3. 构造OleDbCommandBuilder对象,并将此对象和OleDbDataAdapter适配器对象关联
4. 使用OleDbDataAdapter适配器对象填充DataTable或将变动保存到Access数据库
具体实例代码如下:
public partial class Form1 : Form { // 连接字符串 private string connStr = @"Provider= Microsoft.ACE.OLEDB.12.0;Jet OLEDB:DataBase Password=;Data Source=E:\db\data.accdb;"; //声明 private OleDbConnection conn = null; private OleDbDataAdapter adapter = null; private DataTable dt = null; public Form1() { InitializeComponent(); } private void btn_read_Click(object sender, EventArgs e) { // 连接数据库,需要传递连接字符串 conn = new OleDbConnection(connStr); // 打开数据库连接 conn.Open(); // "Select * from tn_member"为SQL语句,意思是从数据库中选择叫做“tn_member”的表,“conn”为连接 adapter = new OleDbDataAdapter("Select * from tn_member", conn); // CommandBuilder对应的是数据适配器,需要传递参数 var cmd = new OleDbCommandBuilder(adapter); // 在内存中创建一个DataTable,用来存放、修改数据库表 dt = new DataTable(); // 通过适配器把表的数据填充到内存dt adapter.Fill(dt); // 把数据显示到界面 dataGridView1.DataSource = dt.DefaultView; } private void btn_write_Click(object sender, EventArgs e) { try { // 按下按钮后,把内存中修改的部分传递给适配器,再通过适配器传递给数据库 adapter.Update(dt); // 清除内存中存放的表数据 dt.Clear(); // 重新读取已经改变过的表数据 adapter.Fill(dt); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { } } }
运行代码,点击读取access按钮,读取数据,如下图:
然后修改name字段的值,点击写access按钮,可以看到结果如下:
winform界面:
access数据表: