2020-09-01

网上的一些教程都不太友好,对于刚入门的新手来说晦涩难懂。自己记下自己学习过程。

一、关于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();
        }
        
    }
}

}

          

         



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值