DataSet数据更新回数据库

moudy 2007-12-25 04:13:26
public DataSet UpdateDs(string _strSql,DataSet changedDs, string tableName)
{
try
{
this.da = new SqlDataAdapter(_strSql, GetConn());
this.sqlCmdBuilder = new SqlCommandBuilder(da);
this.da.Update(changedDs, tableName);
changedDs.AcceptChanges();
return changedDs;//返回更新了的数据库表
}
catch (Exception ex)
{
throw new Exception(ex.Message);//, "数据库更新失败");
}
}
其中 _strSql = "select * from GDC_price_depot";
DataSet 我跟踪过了也没有错.里面有一行,状态是Modify.
da也正确.
在da.Update(changedDs, tableName)时报错.

我调试过是da的UpdateCommand是Null,难道一定要为每个更新都写UpdateCommand吗?我见过更新统一调用Update(包括插入,更新,删除),参数都是用的一个select语句,怎么实现的?

主键有设置.不知道问得是不是清楚.
...全文
230 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
moudy 2008-02-03
  • 打赏
  • 举报
回复
谢谢大家.祝大家春节快乐...

yuxuanji 的方法,改成局部变量后是可以的:)
hy_lihuan 2008-01-24
  • 打赏
  • 举报
回复
不知道,看不出来为什么
LutzMark 2008-01-24
  • 打赏
  • 举报
回复
如果dataset中的表和参数表名不一致也会报错
LutzMark 2008-01-24
  • 打赏
  • 举报
回复
用局部变量试试:
 public DataSet UpdateDs(string _strSql, DataSet changedDs, string tableName)
{
try
{
SqlDataAdapter da = new SqlDataAdapter(_strSql, GetConn());
SqlCommandBuilder sb = new SqlCommandBuilder(da);
da.Update(changedDs, tableName);
changedDs.AcceptChanges();
}
catch (Exception ex)
{
throw new Exception(ex.Message);//, "数据库更新失败");
}

}
zhaohui0312 2008-01-24
  • 打赏
  • 举报
回复
不行就直接写SQL语句
http://www.dqhxz.com/
LutzMark 2008-01-24
  • 打赏
  • 举报
回复
这样不行吧
你还米新的DataSet呢就Upate了

反正每次都重写sql了 干脆连UpdateCommand也每次重来便呗
moudy 2008-01-24
  • 打赏
  • 举报
回复
自己顶一个
moudy 2008-01-22
  • 打赏
  • 举报
回复
To:IFocusYou :

changedDs.AcceptChanges();

这个是更新后重设DS数据状态,它是在Update后,不会是这里的问题.

To:chuxue1342
不好意思,我的变量是有值的,表是有的,也不是这里的问题.

前些天出差了...大家帮我来看看.
lovehongyun 2007-12-26
  • 打赏
  • 举报
回复
奇怪...
wss1801 2007-12-26
  • 打赏
  • 举报
回复
顶一下吧
chuxue1342 2007-12-26
  • 打赏
  • 举报
回复
你想通过什么方式更新数据库?你上面写的语句:
adapter.Update(dataSet, tableName);
你的dataSet中的表根本没有变当然不会更新呀!!
IFocusYou 2007-12-26
  • 打赏
  • 举报
回复
怎么没有我的回复呢?


去掉changedDs.AcceptChanges(); 试
IFocusYou 2007-12-26
  • 打赏
  • 举报
回复
更新数据不能用 changedDs.AcceptChanges();

去掉此行代码试试!
moudy 2007-12-26
  • 打赏
  • 举报
回复
手动写UpdateCommand是可以实现的.但为什么不能自动生成呢?这样我对于每一个更新都要单独写语句了.

另外,用 sqlCmdBuilder.GetUpdateCommand() 是可以获得UpdateCommand的,但它好象忽略了主键,所以只对单条记录更新有效,单条以上照样报错.

大家都来帮我看看啊.
moudy 2007-12-25
  • 打赏
  • 举报
回复
6楼,是单表,但不ok
boblaw 2007-12-25
  • 打赏
  • 举报
回复
你查詢是多個表還是單表?如果是多表,肯定不行,必須你手動寫命令,如果是單表,應該是OK的
moudy 2007-12-25
  • 打赏
  • 举报
回复
二楼的不行,不会自動生成其他的Command,错误依旧
moudy 2007-12-25
  • 打赏
  • 举报
回复
主键有的.
真相重于对错 2007-12-25
  • 打赏
  • 举报
回复
有主键没?
boblaw 2007-12-25
  • 打赏
  • 举报
回复
另:代碼摘自MSDN,有加註釋
加载更多回复(1)

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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