用最简单的办法实现对数据库的操作,后台数据采用ACCESS,窗体如下:
控件只要功能:
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();
}
}
}