private void UpdateData() { using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A")) { con.Open(); SqlCommand cmd = new SqlCommand("select * from member", con); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; SqlCommandBuilder cbr = new SqlCommandBuilder(da); da.Update(ds); } }
怎么还是不行! 查了下dataset的行数,并未发生变化!
Form1上放一个DataGridView和Button public partial class Form1 : Form { private DataSet ds = new DataSet(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A")) { con.Open(); SqlCommand cmd = new SqlCommand("select * from member", con); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; da.Fill(ds); } dataGridView1.DataSource = ds.Tables[0]; } private void UpdateData() { using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A")) { con.Open(); SqlCommand cmd = new SqlCommand("select * from member", con); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; SqlCommandBuilder cbr = new SqlCommandBuilder(da); da.Update(ds); } } private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { UpdateData(); } private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e) { UpdateData(); } private void dataGridView1_UserDeletedRow(object sender, DataGridViewRowEventArgs e) { UpdateData(); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show(ds.Tables[0].Rows.Count.ToString()); } } 我添加、删除、修改数据,都能更新到数据库的,而且按钮单击查ds数据,都是正确的
编辑单元格后更新数据到数据库,可以在CellEndEdit事件中编写代码,利用SqlCommandBuilder构造SQL语句,利用SqlDataAdapter 将DataSet更新到数据库
private DataSet ds = new DataSet();
private SqlDataAdapter da = new SqlDataAdapter();
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A");
con.Open();
SqlCommand cmd = new SqlCommand("select * from member", con);
da.SelectCommand = cmd;
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
} private void UpdateData()
{
SqlCommandBuilder cbr = new SqlCommandBuilder(da);
da.Update(ds);
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
UpdateData();
}
你还可以处理
UserAddedRow
UserDeletedRow
这几个事件这个例子没关注数据库连接关闭的问题,仅测试更新
你断开连接后,数据在DataSet里面你要想保存数据到数据库,还得重新连接数据库,
你将我的代码修改一下呗,很简单啊,在UpdateData方法里面重新写一遍连接数据库的操作
private void UpdateData()
{
using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from member", con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
SqlCommandBuilder cbr = new SqlCommandBuilder(da); da.Update(ds);
}
}
public partial class Form1 : Form
{
private DataSet ds = new DataSet();
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from member", con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);
}
dataGridView1.DataSource = ds.Tables[0];
} private void UpdateData()
{
using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from member", con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
SqlCommandBuilder cbr = new SqlCommandBuilder(da);
da.Update(ds);
}
} private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
UpdateData();
} private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e)
{
UpdateData();
} private void dataGridView1_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
{
UpdateData();
} private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(ds.Tables[0].Rows.Count.ToString());
}
}
我添加、删除、修改数据,都能更新到数据库的,而且按钮单击查ds数据,都是正确的
那datagridview与dateset没有手工的相互绑定?