微软专家和高手们求救:使用OleDbCommandBuilder更新da.update(dt)oracle 9.12数据库操作失败。

pbfan 2005-01-27 10:54:30
OleDbConnection Connection = GetConnection(pub_int_conindes);
OleDbDataAdapter da = new OleDbDataAdapter(dataTable.ExtendedProperties["SelectStatement"].ToString(), Connection);
OleDbCommandBuilder CommandBuilder = new OleDbCommandBuilder(da);
da.Update(dataTable);//here error
插入和删除都可以,就是更新不行。(数据表已经设置了主键)
错误提示:Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information


thanks
...全文
178 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangmeiping 2005-03-01
  • 打赏
  • 举报
回复
就是选出来的datatable里面没有主键信息的原因。 你可以单步调试看看,DataTable.PrimaryKey是不是有内容。

我也发现这个问题,明明表设置了主键,而且select里面也包含主键列,但是fill出来的DataSet里面就是没有PrimaryKey。 可能是ole db privider for oracle的问题。 如果用sql server数据库就没有任何的问题。
chuxue1342 2005-01-27
  • 打赏
  • 举报
回复
study,,up!!!!!
LoveCherry 2005-01-27
  • 打赏
  • 举报
回复
mark
心情解码 2005-01-27
  • 打赏
  • 举报
回复
up





---
pbfan 2005-01-27
  • 打赏
  • 举报
回复
up
pbfan 2005-01-27
  • 打赏
  • 举报
回复
肯定有的,是select * from table.

不可能考虑用update语句来更新的,我是用三层结构来写的。只能用动态生成的command.
bidisty 2005-01-27
  • 打赏
  • 举报
回复
Select语句中没有用到主键列。
xueqs 2005-01-27
  • 打赏
  • 举报
回复
gz
羊羽亻子 2005-01-27
  • 打赏
  • 举报
回复
用存储过程写比较好
DanielQQ 2005-01-27
  • 打赏
  • 举报
回复
一般不要使用CommandBuilder自动生成代码,还是直接拼SQL语句或用存储过程吧!
haoco 2005-01-27
  • 打赏
  • 举报
回复
是因为你的数据适配器不能动态生成你的Update语句,所以导致的。

所以一般我们都不怎么直接用它的Update语句的,用另外的Command控件进行更新

62,046

社区成员

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

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

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

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