OleDbCommandBuilder 简单实现数据库的所有操作

用最简单的办法实现对数据库的操作,后台数据采用ACCESS,窗体如下:

OleDbCommandBuilder  简单实现数据库的所有操作 - 80后 - 小草

控件只要功能:

 

combobox1的下拉菜单在窗体设计时就已经添加进去了,内容是后台数据库的列名。

textbox1是用来输入搜索内容的,搜索的列可以用combobox1的下拉菜单指定。

button2是用来删除数据的。

所有的数据更改通过button1进行更新。

datagridview是用来显示和编辑数据的。

 

 

全局变量:

 

       OleDbConnection con; //连接字符串

        OleDbDataAdapter da;//数据适配器,利用它自带的更新功能来将前台数据更新到后台。

        DataTable dt;//用来做da的数据源。

 

主要思路:

da和dt之间是相互关联:dataGridView1.DataSource = dt;

 

在da中编辑任何东西dt会随着改变,所以da的主要作用是为用户提供一个可视化操作界面,dt用来做临时的数据储。更新的时候是通过da来按照dt的内容向数据库更新。

 

 

1.先对数据库进行搜索查到要修改或删除的行。

  string sqlStr = "select * from 客户信息 where " + comboBox1.Text + " like '%" + textBox1.Text + "%' order by id";//搜索

  da = new OleDbDataAdapter(sqlStr, con);

2.获得的数据填充到datatable 中:

  dt = new DataTable();

3.利用datagridview显示出来:

dataGridView1.DataSource = dt;

 

4.这个时候前台已经显示出来数据,用户可以做任何更改

5.当更改完成后,可以点击button1按钮进行更新

OleDbCommandBuilder myCb = new OleDbCommandBuilder(da);

da.Update(dt);//       

 

 

注意:

     CommandBuilder会查询数据库以确定查询的结果的基表、列名称以及键信息。如果下面条件成立的话,那么CommandBuilder就可以生成更新逻辑:

   查询只返回一个表中的数据。

  这个表有一个主键。

  主键包含在查询的结果中。

 

完整代码如下:

 

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.OleDb;

namespace 出车登记程序

{

    public partial class Form4 : Form

    {

        OleDbConnection con;

        OleDbDataAdapter da;

        DataTable dt;

        public Form4()

        {

            InitializeComponent();

        }

 

        private void Form4_Load(object sender, EventArgs e)

        {

            con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + @"\out.mdb; User Id=admin; Password=; ");

            con.Open();

            comboBox1.SelectedIndex = 0;

       

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            try

            {

                OleDbCommandBuilder myCb = new OleDbCommandBuilder(da);//新建一个语句建设器并绑定到适配器

                da.UpdateCommand = myCb.GetUpdateCommand();

                da.DeleteCommand = myCb.GetDeleteCommand();

                da.InsertCommand = myCb.GetInsertCommand();

                da.Update(dt);//更新

                MessageBox.Show("完成更新");

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.ToString());

            }

 

 

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            dataGridView1.Rows.RemoveAt(dataGridView1.CurrentCell.RowIndex);//删行

        }

 

        private void textBox1_TextChanged(object sender, EventArgs e)

        {

            string sqlStr = "select * from 客户信息 where " + comboBox1.Text + " like '%" + textBox1.Text + "%' order by id";//搜索

            dt = new DataTable();

            da = new OleDbDataAdapter(sqlStr, con);

            da.Fill(dt);

            dataGridView1.DataSource = dt;

        }

 

        private void Form4_FormClosed(object sender, FormClosedEventArgs e)

        {

            con.Dispose();

            da.Dispose();

            dt.Dispose();

           

        }

 

    }

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值