源码是这样的~
SqlCommandBuilder myBuilder=null;
myBuilder=new SqlCommandBuilder(myAdapter);
myAdapter.UpdateCommand=myBuilder.GetUpdateCommand();
myAdapter.InsertCommand=myBuilder.GetInsertCommand();
myAdapter.DeleteCommand=myBuilder.GetDeleteCommand();myAdapter.Update(myDataSet,"Employees");前面对DataTable进行了~一写增加删除操作~最后进行数据内容同步的时候~出现下面的错误提示:
异常详细信息: System.InvalidOperationException: 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。请问:这是什么原因引起的~???怎么解决???
SqlCommandBuilder myBuilder=null;
myBuilder=new SqlCommandBuilder(myAdapter);
myAdapter.UpdateCommand=myBuilder.GetUpdateCommand();
myAdapter.InsertCommand=myBuilder.GetInsertCommand();
myAdapter.DeleteCommand=myBuilder.GetDeleteCommand();myAdapter.Update(myDataSet,"Employees");前面对DataTable进行了~一写增加删除操作~最后进行数据内容同步的时候~出现下面的错误提示:
异常详细信息: System.InvalidOperationException: 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。请问:这是什么原因引起的~???怎么解决???
解决方案 »
- 验证码显示不出来 求高手指教
- 高手进,上传图片保存进数据库问题
- 请问谁有asp.net的jmail收发邮件的详细教程和例子?
- 关于一个类的编写方法(急!)
- 动态生成控件过多时点击操作为什么会有延时?
- 急:怎样让页面不缓存js文件?
- WebForm中如何能在同一个页面中完成给一个主体添加任意参数项,如果这里描述不够清楚,请进入看详细?
- datalist 页眉怎么能够竖排? 高手回答? 谢谢
- 一个很奇怪的页面问题.纠结凌乱了...
- 寻求最佳方案:动态添加Datagrid的模板列数,并设置模板是图片或按钮或超连接。请各位高手帮忙
- 用户控件问题
- 怎样得到虚拟目录的物理路径?(如:我的网站放在 d:\Dir1\MyWeb\ 下面) 我怎样得到这个路径(用这个吗:server.MapPath(??) ??)
-----------------------用SqlCommandBuilder更新DataSet,遇到“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题,关键代码如下(C#):........
string emailSql="select email,validFlag from emailMe";
DataSet emailAdd=new DataSet();
SqlDataAdapter emailAdapter=new SqlDataAdapter(emailSql,myConn);
SqlCommandBuilder cb=new SqlCommandBuilder(emailAdapter);
emailAdapter.Fill(emailAdd,"address");
myConn.Close();
......//修改myDs数据
emailAdapter.Update(emailAdd,"address");emailMe的结构是这样的:
email nvarchar 100
validFlag int运行这段代码,竟然出现了“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”错误。想了一下,是因为emailMe表中没有定义主键字段,所以SqlCommandBuilder无法为SqlDataAdapter自动生成需要的UpdateCommand。修改表的定义,将email字段定义为主键问题当然可以解决,但是因为库里表太多了,逐一修改几乎不可能,有没有其他办法呢?
在网上搜了一下,发现有位网名“蓝色理想”的朋友给出了一个解决方案(http://www.blueidea.com/tech/program/2004/1761.asp),赶紧试一下:
........
string emailSql="select email,validFlag from emailMe";
DataSet emailAdd=new DataSet();
SqlDataAdapter emailAdapter=new SqlDataAdapter(emailSql,myConn);
SqlCommandBuilder cb=new SqlCommandBuilder(emailAdapter);
emailAdapter.Fill(emailAdd,"address");
myConn.Close();
DataTable myDt=emailAdd.Tables["address"];
myDt.PrimaryKey=new DataColumn[]{myDt.Columns["email"]};
......//修改myDs数据
emailAdapter.Update(emailAdd,"address");结果还是同样的问题!不知道是为什么(还在继续研究中)。无奈翻阅MSDN,发现了定义UpdateCommand的方法,结果,问题就是这样解决的:........
string emailSql="select email,validFlag from emailMe";
DataSet emailAdd=new DataSet();
SqlDataAdapter emailAdapter=new SqlDataAdapter(emailSql,myConn);
SqlCommandBuilder cb=new SqlCommandBuilder(emailAdapter);
SqlCommand upCmd=new SqlCommand("update ["+strTableName+"] set validFlag=@validFlag where emai