源码是这样的~
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 生成。请问:这是什么原因引起的~???怎么解决???
解决方案 »
- AjaxPro和Jquery的AJAX性能上有什么区别么?
- 求一正则表达式!!!急!!!!!!
- ajaxpro注册后,jquery很多方法不可使用
- 高人请指点一个有关ajax跨域的问题。
- asp.net连接sqlserver个人版的问题
- 全局变量的问题
- 学习垃圾回收器的用途
- 关于asp.net中datagrid控件在edit模式下,无法保存修改值的问题!!!
- 小问题!!!!马上给分
- web控件能够在页面中用鼠标随意拖动位置吗(不是在vs.net德IDE中,而是在生成的web页面中)?
- 用户控件问题
- 怎样得到虚拟目录的物理路径?(如:我的网站放在 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