SqlDataAdapter.Update问题

Duncan 2012-04-09 05:42:35
一个老问题老困扰我,就是如果我直接使用SqlDataAdapter.Update一个datatable,而这个datatable中没有修改过的标识的话是不是就不能够对数据库中相关数据修改呢?

简而言之:是否存在一种方法能够通过SqlDataAdapter.Update直接上传自己的数据datatable,而不需要先对这个datatable进行修改。

eg:

record_con.Open();
SqlDataAdapter record_ada = new SqlDataAdapter("select * from [" + the_temp_patrolling_record_name + "] where ID=" + the_last_tab.Rows[0]["ID"].ToString(), record_con);
SqlCommandBuilder record_com = new SqlCommandBuilder(record_ada);
record_ada.Update(the_upload_tab);
record_con.Close();


这里的the_upload_tab是一个函数的返回值,这段不能够更新数据库中相应行的数据,所以我猜测是因为the_upload_tab没有修改标识所以导致update失败,望各位指正。
...全文
91 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Duncan 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
调用DataRow.SetModified方法可以把DataRow.RowState 设置为modified,


引用 4 楼 的回复:

DataRow.RowState 设置为modified

真的可行吗?

无法对属性或索引器“System.Data.DataRow.RowState”赋值 -- 它是只读的

是不是需要其他的设置?
[/Quote]
拜谢~~
stonespace 2012-04-09
  • 打赏
  • 举报
回复
调用DataRow.SetModified方法可以把DataRow.RowState 设置为modified,

[Quote=引用 4 楼 的回复:]

DataRow.RowState 设置为modified

真的可行吗?

无法对属性或索引器“System.Data.DataRow.RowState”赋值 -- 它是只读的

是不是需要其他的设置?
[/Quote]
Duncan 2012-04-09
  • 打赏
  • 举报
回复
我考虑的最坏的打算就是先fill出一个原始数据行,然后对这个数据行中的元素遍历核对在修改。。。

不过这么做总觉得不妥。

但是设置
the_last_tab.Rows[0].RowState = DataRowState.Modified;


这种方法老是失败诶。
Duncan 2012-04-09
  • 打赏
  • 举报
回复
DataRow.RowState 设置为modified

真的可行吗?

无法对属性或索引器“System.Data.DataRow.RowState”赋值 -- 它是只读的

是不是需要其他的设置?
Duncan 2012-04-09
  • 打赏
  • 举报
回复
the_upload_tab并不是从SqlDataAdapter fill出来的,而是直接通过其他函数创造的,所以这里我不知道该如何处理。

而且说到没有被修改,我也只是猜测,因为SqlDataAdapter 是一个函数的返回值不知道他是否真的没有修改标识。
stonespace 2012-04-09
  • 打赏
  • 举报
回复
如果the_upload_tab的行都是新生成的,那么Update将在数据库中insert这些行,

如果确定需要修改,可以把每一行的DataRow.RowState 设置为modified,
stonespace 2012-04-09
  • 打赏
  • 举报
回复
如果the_upload_tab没有被修改,那么Update当然不会更新数据库,没有修改过为何要更新数据库?

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧