网上的一些教程都不太友好,对于刚入门的新手来说晦涩难懂。自己记下自己学习过程。
一、关于OLEDB
没有相应的数据提供者的数据库经常要通过OLEDB或ODBC来使用,例如Microsoft Access就可以通过OLEDB来访问。
二、怎么使用OLEDB
1.连接字符串
简单的说,连接字符串就像是一把钥匙,如果C#想和数据库进行连接,得有一把钥匙,不然门都进不去。关于怎么获取Access得连接字符串。
途径1:可以参照另一篇博文:https://mp.youkuaiyun.com/postedit/80319056
途径2:参考网站给出的连接字符串:http://www.connectionstrings.cn/
打开网站,选择Access数据库,选择自己需要的模板

我选择的第一个模板:标准连接。因为数据库我没设置密码,所以后面的部分可以省略。我的代码为:
string constr = @"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = F:\测试代码\Read_Write_SQL\Read_Write_SQL\Data.mdb";2.各个类型的意义
connection就像是一个深入数据库的龙头,而commandBuilder就像抽水机,为抽水提供动力和执行方法,adapter适配器就像是水管。DataTable是内存里用来放数据库其中一张表的数据的,而存在多个表的时候,就需要创建一个DataSet,然后再创建多个DataTable。最后DataTable把数据传到dataGridview进行显示。
其中,适配器adapter已经为我们提供了三个方法,分别是插入,删除,更新。如果检测到dataGridView中的数据有更改,就调用里面的三个方法,并把数据传输到数据库。——参考《C#学习笔记》
调用Update方法,自动判断哪些数据进行了更改,哪些数据进行了删除,哪些数据进行了新增,系统自动判别并把数据传输给数据库。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.OleDb;
namespace Read_Write_SQL
{
public partial class Form1 : Form
{
//声明
OleDbConnection conn = null;
OleDbDataAdapter adt = null;
DataTable dt = null;
OleDbCommandBuilder cmd = null;
//string constr =Properties.Settings.Default.Accon;
//----------------------------------------------------------
//此项需要重新设置
//----------------------------------------------------------
string constr = @"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = F:\测试代码\Read_Write_SQL\Read_Write_SQL\Data.mdb";
public Form1()
{
InitializeComponent();
//连接数据库,需要传递连接字符串
var conn = new OleDbConnection(constr);
//"Select * from Sourse"为SQL语句,意思是从数据库中选择叫做“Sourse”的表,“constr”为连接字符串
adt = new OleDbDataAdapter("Select * from Sourse", constr);
//在内存中创建一个DataTable,用来存放、修改数据库表
dt = new DataTable();
//CommandBuilder对应的是数据适配器,需要传递参数
var cmd = new OleDbCommandBuilder(adt);
//打开数据库连接
conn.Open();
//通过适配器把表的数据填充到内存dt
adt.Fill(dt);
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
;
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = dt.DefaultView;//把数据显示到屏幕
}
private void btn1_Click(object sender, EventArgs e)
{
try
{
//按下按钮后,把内存中修改的部分传递给适配器,再通过适配器传递给数据库
adt.Update(dt);
//清楚内存中存放的表数据
dt.Clear();
//再次读取已经改变过的表数据
adt.Fill(dt);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//conn.Close();
//conn.Dispose();
}
}
}
}
1446

被折叠的 条评论
为什么被折叠?



