// TODO: 这行代码将数据加载到表“waterMeterDataDataSet.InspectFactory”中。您可以根据需要移动或移除它。
this.inspectFactoryTableAdapter.Fill(this.waterMeterDataDataSet.InspectFactory)
问题是,如果在datagridview中,修改了数据(不是添加)后,希望 点击按钮,该数据库的内容也同时修改。应该如何实现?
求高人指点, 在线等待!!!
25 个解决方案
#1
另外,该数据库 没主键
#2
跪求啊! 怎么没人呢
#3
重新绑定一次列表呀~
#4
只是在datagrideview中 修改了, 似乎没有改变列表吧?
#5
你就写个语句啊。。
先用if判断是否修改了数据,如果改了就用update 修改下并绑定保存到数据库中啊。。
先用if判断是否修改了数据,如果改了就用update 修改下并绑定保存到数据库中啊。。
#6
这思路我也是有的。,,。 可是我不知道代码怎么写。,, 求牛人 给一个小列子!
#7
难道没人会么?
#8
最直接的办法
1.如果你是用一个按钮来完成所有数据的更改.就将数据全删除了.再将datagridview的数据全部添加到数据库中.
2.如果你是一行一个按钮用来添加和更新那就好说了.通过点击这行获取到当前的行号将数据源中当前行的旧数据删除,读取当前新行的数据(你的数据源是DataTabel),你没有主键是个麻烦事.不能直接通过主键删除或更改数据.
1.如果你是用一个按钮来完成所有数据的更改.就将数据全删除了.再将datagridview的数据全部添加到数据库中.
2.如果你是一行一个按钮用来添加和更新那就好说了.通过点击这行获取到当前的行号将数据源中当前行的旧数据删除,读取当前新行的数据(你的数据源是DataTabel),你没有主键是个麻烦事.不能直接通过主键删除或更改数据.
#9
this.userDataSet.AcceptChanges()
#10
晕了,获取当前行,不过先结束编辑,然后直接保存当前行到数据库当中,代码不会写,聊我就行了
,我写给你
,我写给你
#11
this.inspectFactoryTableAdapter.Update(this.waterMeterDataDataSet.InspectFactory);
this.waterMeterDataDataSet.AcceptChanges();
#12
数据库没有主键?那有标识列吧?就是不能修改的,唯一标识
如果有唯一标识,我说一个方法,假设你的修改按钮只有一个,一下可以修改dgv的N行,然后点修改按钮
如果有唯一标识,我说一个方法,假设你的修改按钮只有一个,一下可以修改dgv的N行,然后点修改按钮
//dt是datagridview的数据源
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i].RowState == DataRowState.Modified)
{
//TODO:数据库修改代码省略
...........根据唯一标识修改..............
//提交
dt.Rows[i].AcceptChanges();
}
}
#13
你好, 引用你的方法,运行是会报错:“其他信息: 当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。”
#14
你好,你的方法很实在。 可是,我是需要在dataGridview中,修改所有数据后,在一个btn中完成数据的写入。这个可能就没有标识。 有没有,不需要标识的呢?
#15
没有唯一标识啊?
依我看来,那你表设计不合理。建议还是加上主键,否则很难办。
Update方法道理是一样的,你需要指定UpdateCommand,你连唯一标识都没有,如何Update?
依我看来,那你表设计不合理。建议还是加上主键,否则很难办。
Update方法道理是一样的,你需要指定UpdateCommand,你连唯一标识都没有,如何Update?
#16
http://topic.csdn.net/u/20110105/15/10fac19e-ced1-41f8-a969-4c4923aac3b8.html
#17
http://topic.csdn.net/u/20110111/15/61eee9b2-7475-4875-8fe5-2ea0d0767db9.html
这个是我以前发过的贴,我想你应该适用.
这个是我以前发过的贴,我想你应该适用.
#18
还有,你不加主键,会造成冗余数据,会有很多重复的,完全一样的数据存在。
#19
是的, 一开始设置的时候 就没有想到要索引,结果就悲剧了。 现在还能设定某列为索引么?
#20
扬乐,提到的SqlCommandBuilder在这也不适用。
SqlCommandBuilder虽然会自动生成更新、修改、删除的sql语句,进行更新。
可是
当表中没有主键时,自动生成的SQL语句进行UPDate时,会出现异常信息。
异常信息为:用SqlCommandBuilder更新DataSet,遇到“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题。
参见: http://blog.csdn.net/sunjiakai/article/details/4090051
SqlCommandBuilder虽然会自动生成更新、修改、删除的sql语句,进行更新。
可是
当表中没有主键时,自动生成的SQL语句进行UPDate时,会出现异常信息。
异常信息为:用SqlCommandBuilder更新DataSet,遇到“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题。
参见: http://blog.csdn.net/sunjiakai/article/details/4090051
#21
当然可以!祝你好运!
#22
晕死了
#23
我在vs2008 中打开数据库,额。,,。,不知道怎么设定主键。,,仅能 看到了:列名,数据类型,允许null?
#24
只有 int类型的才能当主键啊!
#25
vs2008 中打开数据库?
为什么不在数据库中打开呢?
不是只有int类型的才能当主键。只有没有重复数据出现都可以。
你添加一个自增列吧。
建一个新表,表结构比原表多一列主键(自增),把原表数据Insert新表,删掉原表,把新表改名就OK了
为什么不在数据库中打开呢?
不是只有int类型的才能当主键。只有没有重复数据出现都可以。
你添加一个自增列吧。
建一个新表,表结构比原表多一列主键(自增),把原表数据Insert新表,删掉原表,把新表改名就OK了
#1
另外,该数据库 没主键
#2
跪求啊! 怎么没人呢
#3
重新绑定一次列表呀~
#4
只是在datagrideview中 修改了, 似乎没有改变列表吧?
#5
你就写个语句啊。。
先用if判断是否修改了数据,如果改了就用update 修改下并绑定保存到数据库中啊。。
先用if判断是否修改了数据,如果改了就用update 修改下并绑定保存到数据库中啊。。
#6
这思路我也是有的。,,。 可是我不知道代码怎么写。,, 求牛人 给一个小列子!
#7
难道没人会么?
#8
最直接的办法
1.如果你是用一个按钮来完成所有数据的更改.就将数据全删除了.再将datagridview的数据全部添加到数据库中.
2.如果你是一行一个按钮用来添加和更新那就好说了.通过点击这行获取到当前的行号将数据源中当前行的旧数据删除,读取当前新行的数据(你的数据源是DataTabel),你没有主键是个麻烦事.不能直接通过主键删除或更改数据.
1.如果你是用一个按钮来完成所有数据的更改.就将数据全删除了.再将datagridview的数据全部添加到数据库中.
2.如果你是一行一个按钮用来添加和更新那就好说了.通过点击这行获取到当前的行号将数据源中当前行的旧数据删除,读取当前新行的数据(你的数据源是DataTabel),你没有主键是个麻烦事.不能直接通过主键删除或更改数据.
#9
this.userDataSet.AcceptChanges()
#10
晕了,获取当前行,不过先结束编辑,然后直接保存当前行到数据库当中,代码不会写,聊我就行了
,我写给你
,我写给你
#11
this.inspectFactoryTableAdapter.Update(this.waterMeterDataDataSet.InspectFactory);
this.waterMeterDataDataSet.AcceptChanges();
#12
数据库没有主键?那有标识列吧?就是不能修改的,唯一标识
如果有唯一标识,我说一个方法,假设你的修改按钮只有一个,一下可以修改dgv的N行,然后点修改按钮
如果有唯一标识,我说一个方法,假设你的修改按钮只有一个,一下可以修改dgv的N行,然后点修改按钮
//dt是datagridview的数据源
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i].RowState == DataRowState.Modified)
{
//TODO:数据库修改代码省略
...........根据唯一标识修改..............
//提交
dt.Rows[i].AcceptChanges();
}
}
#13
你好, 引用你的方法,运行是会报错:“其他信息: 当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。”
#14
你好,你的方法很实在。 可是,我是需要在dataGridview中,修改所有数据后,在一个btn中完成数据的写入。这个可能就没有标识。 有没有,不需要标识的呢?
#15
没有唯一标识啊?
依我看来,那你表设计不合理。建议还是加上主键,否则很难办。
Update方法道理是一样的,你需要指定UpdateCommand,你连唯一标识都没有,如何Update?
依我看来,那你表设计不合理。建议还是加上主键,否则很难办。
Update方法道理是一样的,你需要指定UpdateCommand,你连唯一标识都没有,如何Update?
#16
http://topic.csdn.net/u/20110105/15/10fac19e-ced1-41f8-a969-4c4923aac3b8.html
#17
http://topic.csdn.net/u/20110111/15/61eee9b2-7475-4875-8fe5-2ea0d0767db9.html
这个是我以前发过的贴,我想你应该适用.
这个是我以前发过的贴,我想你应该适用.
#18
还有,你不加主键,会造成冗余数据,会有很多重复的,完全一样的数据存在。
#19
是的, 一开始设置的时候 就没有想到要索引,结果就悲剧了。 现在还能设定某列为索引么?
#20
扬乐,提到的SqlCommandBuilder在这也不适用。
SqlCommandBuilder虽然会自动生成更新、修改、删除的sql语句,进行更新。
可是
当表中没有主键时,自动生成的SQL语句进行UPDate时,会出现异常信息。
异常信息为:用SqlCommandBuilder更新DataSet,遇到“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题。
参见: http://blog.csdn.net/sunjiakai/article/details/4090051
SqlCommandBuilder虽然会自动生成更新、修改、删除的sql语句,进行更新。
可是
当表中没有主键时,自动生成的SQL语句进行UPDate时,会出现异常信息。
异常信息为:用SqlCommandBuilder更新DataSet,遇到“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题。
参见: http://blog.csdn.net/sunjiakai/article/details/4090051
#21
当然可以!祝你好运!
#22
晕死了
#23
我在vs2008 中打开数据库,额。,,。,不知道怎么设定主键。,,仅能 看到了:列名,数据类型,允许null?
#24
只有 int类型的才能当主键啊!
#25
vs2008 中打开数据库?
为什么不在数据库中打开呢?
不是只有int类型的才能当主键。只有没有重复数据出现都可以。
你添加一个自增列吧。
建一个新表,表结构比原表多一列主键(自增),把原表数据Insert新表,删掉原表,把新表改名就OK了
为什么不在数据库中打开呢?
不是只有int类型的才能当主键。只有没有重复数据出现都可以。
你添加一个自增列吧。
建一个新表,表结构比原表多一列主键(自增),把原表数据Insert新表,删掉原表,把新表改名就OK了