更新dataset到数据库,执行成功,但数据未被修改。

adamcn 2007-01-10 11:06:16
SqlDataAdapter da = new SqlDataAdapter("select * from 测点信息", conn);
DataSet ds = new DataSet();

ds.ReadXmlSchema(new StringReader(SchemaText));
ds.ReadXml(new StringReader(XmlText),XmlReadMode.InferSchema);

ds.Tables[0].Rows[0].AcceptChanges();
ds.Tables[0].Rows[0].SetModified();

SqlCommandBuilder commandBuilder = new SqlCommandBuilder(da);
int i = da.Update(ds, "测点信息");

-------------------------------------------------------------------

执行完后,i=1,但表里的数据未更新。

如果删除以下语句:

ds.Tables[0].Rows[0].AcceptChanges();
ds.Tables[0].Rows[0].SetModified();

则dataset的数据能成功新增到表里,但我需要是update而不是insert。

不知道上面的代码哪里出了问题,望各位大侠帮忙看看。




...全文
327 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
流年 2007-01-10
  • 打赏
  • 举报
回复
--------------------
ds.Tables[0].Rows[0].AcceptChanges();
在调用update前用它?

它把所有rowstate都改成unchange,还更新什么啊?
---------------------
我也这么认为,DataSet更新是更新的其中改变的内容。
adamcn 2007-01-10
  • 打赏
  • 举报
回复
honkerhero(孤独的流浪):
顺便再说一句
你要更新的DS必须和表的结构一致,有映射关系


-----------------------------------------------
应该是一致的,因为插入数据是好的,但就是更新无效!
honkerhero 2007-01-10
  • 打赏
  • 举报
回复
顺便再说一句
你要更新的DS必须和表的结构一致,有映射关系
FillSchema这是填充结构的方法

sda1.FillSchema(ds1,SchemaType.Mapped);
sda1.Fill(ds1);

ds1.Tables[0].Clear();

foreach(DataRow dr2 in ds2.Tables[0].Rows)
{
DataRow dr1 = ds1.Tables[0].NewRow();
foreach(DataColumn dc in ds1.Tables[0].Columns)
{
dr1[dc.ColumnName] = dr2[dc.ColumnName];
}

ds1.Tables[0].Rows.Add(dr1);
}

sda1.Update(ds1);
honkerhero 2007-01-10
  • 打赏
  • 举报
回复
ds.Tables[0].Rows[0].AcceptChanges();
在调用update前用它?

它把所有rowstate都改成unchange,还更新什么啊?
adamcn 2007-01-10
  • 打赏
  • 举报
回复
我怀疑是SqlCommandBuilder自动产生的UpdateCommand有问题。
jiatong1981 2007-01-10
  • 打赏
  • 举报
回复
ds.AcceptChanges();
adamcn 2007-01-10
  • 打赏
  • 举报
回复
那如何让值改变呢?每一列重新赋值?
bulebirds 2007-01-10
  • 打赏
  • 举报
回复
ds.Tables[0].Rows[0].AcceptChanges();
ds.Tables[0].Rows[0].SetModified();
这里肯定有问题,估计没有改变原来的值,所以执行成功,但数据没变
adamcn 2007-01-10
  • 打赏
  • 举报
回复
ReadXml后,RowState=Added,我是想改成Modified,所以增加:

ds.Tables[0].Rows[0].AcceptChanges();
ds.Tables[0].Rows[0].SetModified();

110,545

社区成员

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

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

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