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



datareader的问题!!!!!


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


datareader的问题!!!!!
发表于:2007-09-05 13:55:12 楼主
我在一个类里的一个方法用到了datareader对象,并在方法结束前将他close了.可是我在用这个类建立了两个对象时,第二个对象在用到了这个方法时却总是提示:已有打开的与此命令相关联的   datareader,必须首先将它关闭.如何解决啊!!!
发表于:2007-09-05 13:58:211楼 得分:0
说明你同1个链接同时打开了2个datareader,必须先关闭1个datareader,要么就开第2个datareader的时候用个新的链接
发表于:2007-09-05 15:14:132楼 得分:0
1/   我的连接是对象的一个属性,是在对象new时传递进去的.难道连接传递的是地址吗?
2/   在我的类的方法里,在最后已经进行了close为什么还是不行呢?
发表于:2007-09-05 15:24:313楼 得分:0
1/   我的连接是对象的一个属性,是在对象new时传递进去的.难道连接传递的是地址吗?
-----------------------
你传的是同1个链接吧,你有没有new2次链接就知道了


2/   在我的类的方法里,在最后已经进行了close为什么还是不行呢?
--------------------------
一起错误的原因是在你close之前就又开了1个datareader。


ps:最好贴出你的代码看看
发表于:2007-09-05 15:54:044楼 得分:0
原码如下:
public   sub   conggoutodb(byval   datetime   as   date)

                        geshi   =   split(my_meta1.filefieldorder,   ", ")

                        geshi1   =   split(my_meta1.attributeorder,   ": ")

                        geshi2   =   split(my_meta1.attributeorder1,   ": ")

                        zidonggeshi1   =   split(my_meta2.attributeorder,   ": ")

                        zidonggeshi2   =   split(my_meta2.attributeorder1,   ": ")

                        dim   mycommandstr   as   string

                        dim   mycommand1   as   sqlcommand

                        dim   myreader3   as   sqldatareader

                        dim   count   as   boolean

                        mycommandstr   =   "select   *   from   "   +   trim(my_meta1.tablename)   +   "   where   stationid   = ' "   +   trim(my_meta1.stationid)   +   " '   and   observdate= ' "   +   datetime.toshortdatestring   +   " 'and   observtime= ' "   +   datetime.tolongtimestring   +   " ';select   *   from   "   +   my_meta2.tablename   +   "   where   stationid   = ' "   +   my_meta2.stationid   +   " '   and   observdate= ' "   +   datetime.toshortdatestring   +   " 'and   observtime= ' "   +   datetime.tolongtimestring   +   " ' "

                        mycommand1   =   new   sqlcommand(mycommandstr,   myconnection)

                        myreader3   =   mycommand1.EXECutereader()       这句是出错的地方!!!!

                        count   =   myreader3.read()

                        dim   i,   k,   j   as   integer

                        for   i   =   0   to   geshi2.length   -   1

                                k   =   ctype(geshi2(i),   integer)

                                j   =   ctype(geshi1(i   +   1),   integer)

                                if   count   then

                                        melement(k,   0)   =   myreader3(j)

                                else

                                        melement(k,   0)   =   dbnull.value.tostring

                                end   if

                                melement(k,   1)   =   "0 "

                        next

                        myreader3.nextresult()

                        count   =   myreader3.read()

                        for   i   =   0   to   zidonggeshi2.length   -   1

                                k   =   ctype(zidonggeshi2(i),   integer)

                                j   =   ctype(zidonggeshi1(i   +   1),   integer)

                                if   count   then

                                        melement(k,   0)   =   myreader3(j)

                                else

                                        melement(k,   0)   =   dbnull.value.tostring

                                end   if

                                melement(k,   1)   =   "0 "

                        next

                        myreader3.close()

                        mycommand1.dispose()

                end   sub

这是类里的一个方法> ..
发表于:2007-09-05 15:59:015楼 得分:0
你前面1个方法了,调用conggoutodb方法之前调用的方法.


快速检索

最新资讯
热门点击