注册 登录
编程论坛 ASP.NET技术论坛

关于返回DataReader对象问题

golmjie 发布于 2010-08-10 10:41, 1412 次点击
我一般要返回数据库的内容,我先弄个方法返回个DataReader对象(也就是return cmd.ExecuteReaader())返回后面没有关数据库,我关它会说检测到无法访问代码所以我没关了不过也报错,我就用这个对象绑定数据了,问题来了,一开始就没问题,刷新多几次或者按按钮多几次他就保错了,定位在我写的那个方法的conn.Open()哪里说未指定的错误!大家明白我说什么吗?
11 回复
#2
冰镇柠檬汁儿2010-08-10 10:42
你把conn关了,就应该可以了
#3
golmjie2010-08-10 10:44
这句打错了我没关了不过也报错应该是没报错!
#4
冰镇柠檬汁儿2010-08-10 10:46
不明白你在说什么
#5
golmjie2010-08-10 10:56
回复 2楼 冰镇柠檬汁儿
还是死悄悄,我下了断点在哪,根本没执行到conn.Close,他就直接跳出去了,我放在返回的前面点又说我当前状态以关闭,就卡在这个问题了,东西快弄好了,有东西交了!
#6
golmjie2010-08-10 10:59
回复 4楼 冰镇柠檬汁儿
那你一般绑定数据控件都是怎么绑定的哈,说下大概好么?
#7
冰镇柠檬汁儿2010-08-10 15:51
如果按照你的做法,那你在读取完DataReader对象后,必须在方法外关闭DataReader对象,然后在方法外面关闭conn,这样做不是不可以,只是这样做会很好的破坏对象的封装性,呵呵。
其实你可以考虑用另外一种方式来得到这些数据,比如用DataReader对象读取数据库,但是不返回DataReader对象,而是将DataReader得到的数据保存到二维字符串数组中,或者存到返回表的持续化对象的数组中,这样就可以了
#8
golmjie2010-08-10 16:02
回复 7楼 冰镇柠檬汁儿
应该是关不到数据库的问题了,我考虑换其他的做法了!
#9
golmjie2010-08-10 18:27
回复 7楼 冰镇柠檬汁儿
我测试过了是没关conn的问题了,我打算重做返回个DataTable绑定了,我还问下怎样关闭返回DataReader对象方法中的conn呢?
#10
bygg2010-08-10 18:42
即使是返回,也不应该是返回cmd.ExecuteReaader()吧?
你的东西都还在用,你如何关闭?总不能将这个对象传出去吧?这样的话,别人同时访问,就over了。
#11
golmjie2010-08-10 19:09
回复 10楼 bygg
是啊,我直接返回它图它方便,没有想到这个问题,现在有经验了哈,呵!
#12
bygg2010-08-11 09:32
呵呵,与数据库相关的东西,最好在返回值之前,将数据与数据库的联系断开……
  既然解决了,开始送分吧^_^
1