C# Access 读写数据库

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

一、关于OLEDB

没有相应的数据提供者的数据库经常要通过OLEDB或ODBC来使用,例如Microsoft Access就可以通过OLEDB来访问。

二、怎么使用OLEDB

1.连接字符串

  简单的说,连接字符串就像是一把钥匙,如果C#想和数据库进行连接,得有一把钥匙,不然门都进不去。关于怎么获取Access得连接字符串。

途径1:可以参照另一篇博文:https://mp.csdn.net/postedit/80319056

途径2:参考网站给出的连接字符串:http://www.connectionstrings.cn/

            打开网站,选择Access数据库,选择自己需要的模板

C# Access 读写数据库_第1张图片

        我选择的第一个模板:标准连接。因为数据库我没设置密码,所以后面的部分可以省略。我的代码为:


 string constr = @"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = F:\测试代码\Read_Write_SQL\Read_Write_SQL\Data.mdb";

2.各个类型的意义

C# Access 读写数据库_第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();
            }
            
        }
    }
}

          

         


你可能感兴趣的:(C#)