SqlCommandBuilder 批量更新数据库的怪异问题?
来源:互联网 发布:上海linux招聘 编辑:程序博客网 时间:2024/05/16 06:10
昨天在一直使用SqlCommandBuilder批量更新数据库时,老是不成功,代码如下:
其中btShow是一个按纽(直接在窗体上)
其中btSave是一个在bindingNavigator上自已添加的按纽(后来发现问题就出现在它身上)
private IAdapter ada = new SqlAdapter();
private SqlDataAdapter da;
private DataSet ds;
private void btShow_Click(object sender, EventArgs e)
...{
da = ada.adapter("SELECT * FROM late");
if (da != null)
...{
ds = new DataSet();
da.Fill(ds);
bindingSource1.DataSource = ds.Tables[0];
bindingNavigator1.BindingSource = bindingSource1;
dataGridView1.DataSource = bindingSource1;
}
}
private void toolSave_Click(object sender, EventArgs e)
...{
SqlCommandBuilder scb = new SqlCommandBuilder(da);
da.Update(ds);//更新数据库
}
private SqlDataAdapter da;
private DataSet ds;
private void btShow_Click(object sender, EventArgs e)
...{
da = ada.adapter("SELECT * FROM late");
if (da != null)
...{
ds = new DataSet();
da.Fill(ds);
bindingSource1.DataSource = ds.Tables[0];
bindingNavigator1.BindingSource = bindingSource1;
dataGridView1.DataSource = bindingSource1;
}
}
private void toolSave_Click(object sender, EventArgs e)
...{
SqlCommandBuilder scb = new SqlCommandBuilder(da);
da.Update(ds);//更新数据库
}
以上代码总是不能更新数据库
通过跟踪发现当更改一个datagridview中的单元格时,且焦点还在这个单元格时ds.HasChanges()方法始为false,
但是toolSave事件照样执行,因为没有发生任何更改,所以不向数据库发送更新命令(ds.Update(ds)也会执行),这时把数据库暂停也不会出现异常.
当更改了一个单格的值后,并让它失去焦点,比如让它下一个单元格处于编辑时,ds.HasChanges()才会为true,此时会更新数据库.
但是是窗体上的按纽,则上面的代码不管有没有失去焦点都能成功更新.
解决方法:
在toolSave更改为下面代码就可以正确更新了:
private void toolSave_Click(object sender, EventArgs e)
...{
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;//另有很多朋友问,怎样把焦点定位到指定单元格并处于编辑状态,这条语句就是关键了.
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];//把焦点定位到第一列第一行,不知道有没有更好的方法
if (ds.HasChanges())
...{
SqlCommandBuilder scb = new SqlCommandBuilder(da);
da.Update(ds);
}
...{
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;//另有很多朋友问,怎样把焦点定位到指定单元格并处于编辑状态,这条语句就是关键了.
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];//把焦点定位到第一列第一行,不知道有没有更好的方法
if (ds.HasChanges())
...{
SqlCommandBuilder scb = new SqlCommandBuilder(da);
da.Update(ds);
}
希望对您有用.
- SqlCommandBuilder 批量更新数据库的怪异问题?
- 用SqlCommandBuilder实现数据库批量更新的方法
- .net 用SqlCommandBuilder 实现数据库批量更新
- 用sqlCommandBuilder批量更新
- SqlCommandBuilder批量更新数据
- 用sqlCommandBuilder批量更新
- SqlCommandBuilder批量更新数据
- SqlCommandBuilder 实现批量更新
- 用SqlCommandBuilder 更新数据库
- 用SqlCommandBuilder 实现批量更新
- 用SqlCommandBuilder 实现批量更新
- 用SqlCommandBuilder 实现批量更新
- 用SqlCommandBuilder 实现批量更新
- 用SqlCommandBuilder 实现批量更新
- 用SqlCommandBuilder 实现批量更新
- 用SqlCommandBuilder 实现批量更新
- 用SqlCommandBuilder 实现批量更新
- 用SqlCommandBuilder 实现批量更新
- 函数出错会返回值
- 关于LNK2001错误的一些总结 (摘录) - David Hu - 网大博客 - powered by phpwind.net
- 漂浮广告的代码汇总
- 这样做服务器的都有
- 用C#生成随机中文汉字验证码的基本原理
- SqlCommandBuilder 批量更新数据库的怪异问题?
- J2ME代码效率测试_for循环和除法
- 纯资源dll库连接的LNK1120错误! - 宁静以致远 - CSDNBlog
- 可以说是全世界最简单的VB动态调用外部函数(附源代码)
- Linux内存管理
- Linux 2.6.19.x 内核编译配置选项简介
- vb6 webbrowser 禁示弹出对话框
- 12.2文本与XML
- 80386 汇编速查手册