C#winform dataGridView更新数据库
dataGridView更新数据库可以分2中情况:
1 dataGridView更新数据库自定义数据源更新数据库,
2 dataGridView数据源控件更新数据库。
当dataGridView控件启用了编辑、删除功能,你编辑了dataGridView中到列该dataGridView对应到dataset中到数据也会跟着更新但要把数据更新到数据库还需要一些代码到支持。
我们先说第一种情况:dataGridView更新数据库自定义数据源更新数据库
1)当数据库表有主键时,我们可通过全局变量dataset或者datatable,利用DataAdapter.Update()更新到数据库。
public partial class Form1 : Form
{
private DataTable DT = new DataTable();
private SqlDataAdapter SDA = new SqlDataAdapter();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=127.0.0.1;database=pubs;uid=sa");
SqlCommand SCD = new SqlCommand("select * from tables", conn);
SDA.SelectCommand = SCD;
SDA.Fill(DT);
dataGridView1.DataSource = DT;
}
#region 使用Update更新数据库
private void button_save_Click(object sender, EventArgs e)
{
try
{
SqlCommandBuilder SCB = new SqlCommandBuilder(SDA);
SDA.Update(DT);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
MessageBox.Show("更新成功!");
}
#endregion
2)当数据库表没有主键时,要通过读取dataGridView改变到数据行通过SQL语句更新数据库(这个没用试暂时没有代码)。其实每个表都应该有主键到,哪怕说自增的。
2 dataGridView数据源控件更新数据库。
当dataGridView到数据源是数据源控件控件时,更新变到简单多了(也需要有主键)。我们看到页面底部里有一个TableAdapter(注意这里不是DataAdapter),该TableAdapter已经绑定CommandBuilder只须调用TableAdapter.update(ds.表名)就可以搞定。dataset也说有到,所以这个相对简单到多。