SqlConnection conn=new SqlConnection("data source=(local);uid=sa;pwd=cym;initial catalog=test1");
SqlDataAdapter sda=new SqlDataAdapter("select * from t1",conn);
SqlCommandBuilder scb=new SqlCommandBuilder(sda);
DataSet ds=new DataSet();
sda.Fill(ds);
ds.Tables[0].Rows[0].Delete();
sda.Update(ds);这样写没问题。
是不是表没有定义主键。
SqlDataAdapter sda=new SqlDataAdapter("select * from t1",conn);
SqlCommandBuilder scb=new SqlCommandBuilder(sda);
DataSet ds=new DataSet();
sda.Fill(ds);
ds.Tables[0].Rows[0].Delete();
sda.Update(ds);这样写没问题。
是不是表没有定义主键。
解决方案 »
- wcf客户端有多个网卡,如何配置?
- 错误 CS0234: 命名空间“System.IO”中不存在类型或命名空间名称“Pipes”(是缺少程序集引用吗?)
- 认识正则表达式的前辈帮我看看
- .Net dll 如何注册(不使用regasm)
- 怎样把SQL数据库里的值绑定到TreeView的子节点和根节点?
- C#程序不显示数据,江湖告急啊
- 如何在c#中调用vb的方法?
- C#windows程序主线程创建三个子线程导致主窗口变卡
- 请问怎样在remoting中传输Image 对象?
- 我是C#学习者,希望与大家多多交流,QQ:35575743
- C#支持友员函数和INLINE函数吗?
- 求助 实现这样的弹出对话框?
表没设主键会出现这种情况吗?我也是象你这样写的,而且加上事务处理的.
请问您解决了吗?网上很多人都说没遇到,但我很奇怪是否是VS版本的原因所以他们碰不到.
先把DataSet的某一ROW删掉
________________________
怎么删的?delete还是remove?
Update方法操作的大概是这样的:检查DataSet.Tables[TableName]的每一行的DataRowVersion,如果是Deleted,就调用SqlDataAdapter.DeleteCommand来更新数据库。RemoveAt()将某一行从DataTable移走了,Update()就不能为它执行更新数据库的操作。
SqlDataAdapter sda=new SqlDataAdapter("select * from t1",conn);
sda.MissingSchemaAction = MissingSchemaAction.AddWithKey;
SqlCommandBuilder scb=new SqlCommandBuilder(sda);
scb.GetUpdateCommand();DataSet ds=new DataSet();
sda.Fill(ds);
ds.Tables[0].Rows[0].Delete();
sda.Update(ds);
//
试一试,如果不行的话就是主键没设了
2、表中字段有没有空格,有空格时,采用SqlCommandBuilder会出错,(我碰到过这种情况,然后自己写DELETECOMMAND语句)
对于在运行时动态指定 SelectCommand(例如通过采用用户提供的文本命令的查询工具)的情况,可能无法在设计时指定合适的 InsertCommand、UpdateCommand 或 DeleteCommand。如果 DataTable 映射到单个数据库表或从单个数据库表生成,则可以利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand、InsertCommand 和 UpdateCommand。为了自动生成命令,必须设置 SelectCommand 属性,这是最低的要求。SelectCommand 所检索的表架构确定自动生成的 INSERT、UPDATE 和 DELETE 语句的语法。为了返回构造插入、更新和删除命令所必需的元数据,CommandBuilder 必须执行 SelectCommand。因此,必须额外经历一次到数据源的行程,这可能会降低性能。若要实现最佳性能,请显式指定命令而不是使用 CommandBuilder。SelectCommand 还必须返回至少一个主键或唯一列。如果不存在任何主键或唯一列,则将生成 InvalidOperation 异常,并且不会生成命令。
即自己写DeleteCommand不用,CommandBuilder 自动生成命令需要主键。
首先,我的表中是有主键的,而且执行时是没有异常的,因为我执行Insert、Update等都问题,只是这个Delete执等无效,而且运行时没有任何异常,日志中也没有错误记录,所以我才认为这可能是MS的BUG.
你就delete 一行
然后
int returnVar= sda.Update(ds)
看看是否是0 如果是零那就是delete的语句生成的不对或不正常。
如果是 1 那就是其他地方的问题了。
表中有空字段也会有问题?但问题是其他都没问题就是Delete不行,和空字段没关系吧,现在暂时我也是用显式命令实现,但我就疑问是否是MS的BUG,如是,就反映给MS,让它在下一版本中改正.