您的位置:程序门 -> .net技术 -> vb.net



请教:sqldatasource代码设置updatecommand更新不成功


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教:sqldatasource代码设置updatecommand更新不成功
发表于:2007-02-06 16:35:31 楼主
代码:
s2.updatecommand   =   "update   [meun_db]   set   [meun_name]   =   '33 '   where   [meun_id]   =   'z1 ' "  
s2.update()

以下是出错提示:
您已指定   更新   命令比较   sqldatasource“s2”的所有值,但为   oldvalues   传入的字典是空的。请为   更新   传入有效的字典或将模式更改为   overwritechanges。  
说明:   执行当前   web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   system.invalidoperationexception:   您已指定   更新   命令比较   sqldatasource“s2”的所有值,但为   oldvalues   传入的字典是空的。请为   更新   传入有效的字典或将模式更改为   overwritechanges。

发表于:2007-02-06 16:53:371楼 得分:0
直接用sqlcommand

using   connection   as   new   sqlconnection(connectionstring)
                dim   command   as   new   sqlcommand(   "update   [meun_db]   set   [meun_name]   =   '33 '   where   [meun_id]   =   'z1 ' "  
,   connection)
                command.connection.open()
                command.EXECutenonquery()


   
*****************************************************************************
欢迎使用csdn论坛专用阅读器   :   csdn   reader(附全部源代码)  

最新版本:20070130

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
发表于:2007-02-06 16:55:542楼 得分:0
谢谢,这个我知道,我现在就是想通过代码设置updatecommand   来实现.
发表于:2007-02-06 17:05:353楼 得分:0
随便改一行纪录
发表于:2007-02-06 17:13:014楼 得分:0
????
发表于:2007-02-06 17:46:335楼 得分:0
怎么没有人知道吗?
发表于:2007-02-06 18:12:026楼 得分:0
如果放在adapter中更新,就不能这样写了,要带参数的,以下是一个防止并发的更新
                                cmd1   =   new   sqlclient.sqlcommand
                                cmd1.connection   =   connection
                                cmd1.commandtype   =   commandtype.text
                                cmd1.commandtext   =   "update   t_bas_area   set   ar_no   =   @dar_no,ar_name   =   @dar_name,ar_level   =   @dar_level,ar_fid   =   @dar_fid,ar_isend   =   @dar_isend,ar_memo   =   @dar_memo   where   (ar_id   =   @original_did   )   and   (ar_no   =   @original_dar_no   or   @original_dar_no   is   null   and   ar_no   is   null)     and   (ar_name   =   @original_dar_name   or   @original_dar_name   is   null   and   ar_name   is   null)     and   (ar_level   =   @original_dar_level   or   @original_dar_level   is   null   and   ar_level   is   null)     and   (ar_fid   =   @original_dar_fid   or   @original_dar_fid   is   null   and   ar_fid   is   null)     and   (ar_isend   =   @original_dar_isend   or   @original_dar_isend   is   null   and   ar_isend   is   null)     and   (ar_memo   =   @original_dar_memo   or   @original_dar_memo   is   null   and   ar_memo   is   null)   ; "   &   strselect_base   &   "   where   (x.selfstate=0   and   x.ar_id   =@did) "
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@did ",   system.data.sqldbtype.int,   4,   "did "))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@original_did ",   system.data.sqldbtype.int,   4,   system.data.parameterdirection.input,   false,   ctype(0,   byte),   ctype(0,   byte),   "did ",   system.data.datarowversion.original,   nothing))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@dar_no ",   system.data.sqldbtype.varchar,   50,   "dar_no "))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@original_dar_no ",   system.data.sqldbtype.varchar,   50,   system.data.parameterdirection.input,   false,   ctype(0,   byte),   ctype(0,   byte),   "dar_no ",   system.data.datarowversion.original,   nothing))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@dar_name ",   system.data.sqldbtype.varchar,   50,   "dar_name "))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@original_dar_name ",   system.data.sqldbtype.varchar,   50,   system.data.parameterdirection.input,   false,   ctype(0,   byte),   ctype(0,   byte),   "dar_name ",   system.data.datarowversion.original,   nothing))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@dar_level ",   system.data.sqldbtype.tinyint,   1,   "dar_level "))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@original_dar_level ",   system.data.sqldbtype.tinyint,   1,   system.data.parameterdirection.input,   false,   ctype(0,   byte),   ctype(0,   byte),   "dar_level ",   system.data.datarowversion.original,   nothing))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@dar_fid ",   system.data.sqldbtype.int,   4,   "dar_fid "))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@original_dar_fid ",   system.data.sqldbtype.int,   4,   system.data.parameterdirection.input,   false,   ctype(0,   byte),   ctype(0,   byte),   "dar_fid ",   system.data.datarowversion.original,   nothing))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@dar_isend ",   system.data.sqldbtype.tinyint,   1,   "dar_isend "))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@original_dar_isend ",   system.data.sqldbtype.tinyint,   1,   system.data.parameterdirection.input,   false,   ctype(0,   byte),   ctype(0,   byte),   "dar_isend ",   system.data.datarowversion.original,   nothing))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@dar_memo ",   system.data.sqldbtype.varchar,   500,   "dar_memo "))
                                cmd1.parameters.add(new   system.data.sqlclient.sqlparameter( "@original_dar_memo ",   system.data.sqldbtype.varchar,   500,   system.data.parameterdirection.input,   false,   ctype(0,   byte),   ctype(0,   byte),   "dar_memo ",   system.data.datarowversion.original,   nothing))

建议看一下sqladapter的相关文章
发表于:2007-02-06 18:41:427楼 得分:0
好晕呀!!!!
为什么我设置sqldatasource的insertcommand和selectcommand都可以执行,而只有updatecommand执行不了呢?
发表于:2007-02-06 19:08:338楼 得分:0
up
发表于:2007-02-06 19:38:299楼 得分:0
up
发表于:2007-02-07 15:16:4210楼 得分:0
selectcommand无须参数是最容易设置,所以通常是极少出错的
insertcommand参数较少,而且是单纯的插入,出错的也较少
updatacommand如果带并发检测就要涉及到datarow的oldversion值,比较麻烦,把你的这里的代码较完整的贴出来看看,你问题中所示代码肯定不行。
发表于:2007-02-21 11:49:0311楼 得分:0
该回复于2007-12-21 19:39:12被管理员或版主删除


快速检索

最新资讯
热门点击