首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

DataSet更新到数据库的有关问题

2012-05-23 
DataSet更新到数据库的问题使用以下代码更新数据库SqlCommand sqlCmd new SqlCommand()sqlCmd.CommandT

DataSet更新到数据库的问题
使用以下代码更新数据库
 SqlCommand sqlCmd = new SqlCommand();
  sqlCmd.CommandText = strSql;
  sqlCmd.Connection = connection;

  if (ConnectionState.Closed == connection.State)
  {
  connection.Open();
  }

  SqlDataAdapter Ad = new SqlDataAdapter(sqlCmd.CommandText, connection);

  Ad.ContinueUpdateOnError = true; //继续存储没有错的行

  SqlCommandBuilder builder = new SqlCommandBuilder(Ad); //自动生成update,insert,delete语句

   
  builder.QuotePrefix = "[";
  builder.QuoteSuffix = "]";

  Ad.Fill(ds, strTable);

   
  Ad.UpdateCommand = builder.GetUpdateCommand();  

  int updateRows = Ad.Update(ds, strTable);
  bRun = (updateRows > 0) ? true : false;

  Ad.Dispose();
  ds.Dispose();

赋strSql="select * from tb where id=0";
但发现只新增数据,没有更新到数据,设置断点获取UpdateCommand 的更新语句发现是update tb set id=@sp1,c2=@sp2,c3=@sp3 where id=@sp1 and c2=@sp2 and c3=@sp3;也就是说自动生成的更新条件是所有字段的,这也就造成了更新不到数据了,怎么设置它的更新条件只能取第一个字段或者关键字id呢?

[解决办法]
直接用 SqlCommand.ExecuteNonQuery 更新呗。或者直接修改 UpdateCommand.CommandText
[解决办法]

探讨
直接用 SqlCommand.ExecuteNonQuery 更新呗。或者直接修改 UpdateCommand.CommandText

[解决办法]
一般情况都用实体类来做ORM
[解决办法]
int updateRows = Ad.Update(ds, strTable);
在执行这句之前,ds里的内容跟预想的一样吗
[解决办法]
SqlCommandBuilder builder = new SqlCommandBuilder(Ad); 
sb.ConflictOption = ConflictOption.OverwriteChanges;
sb.SetAllValues = false;

试试看,我记得是通用的。

可以控制 GetUpdateCommand 方法生成的命令。
[解决办法]
应该是表没有设置主键吧
[解决办法]
表里面有主键吗,用ExecuteNonQuery 执行不就可以了。
[解决办法]
SQL code
DECLARE @nct intselect @nct=........... if(@nct>0)begin    --更新语句endelsebegin--添加添加end 

热点排行