.Net数据库访问问题:已有打开的与此连接相关联的 DataReader,必须首先将它关闭。

本文主要是介绍.Net数据库访问问题:已有打开的与此连接相关联的 DataReader,必须首先将它关闭。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当创建多个DataReader对象.时,系统将提示“已有打开的与此连接相关联的DataReader,必须首先将它关闭,并不是我想多创建几个这样的对象,只因数据是按树状结构分布的,通过递归来完成数据的访问,所以才会出现多个DataReader的情况,我把问题分析有如下几种可能性:

1.数据库本身的限制,这种情况不可能,我在ASP中采用的ODBC访问,没出现问题,转到.NET时才出现这样的情况。

2.我用的连接或相关的对象存在相应的属性设置,这种情况倒是有可能,但我无资料可查,通过属性浏览也没有看到可能的属性对象。

3..NET本身的BUG,这种可能性也是很大的,一般的对象的默认情况应该能够正常操作,通过限制来达到其他其他相关需求,如安全性等。

所以我把源码列出来,让大家帮个忙,有没有解决的办法,示例代码用的是ODBC,原先用的是SqlClient,结果都是一样的。

using System;
using System.Data ;
using System.Data .Odbc ;

namespace ConsoleApplication1
{
 /// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 class Class1
 {
  public OdbcConnection Conn;
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: 在此处添加代码以启动应用程序
   //
   new Class1 ().Do ();

  }
  public void Do()
  {
   // 在此处放置用户代码以初始化页面
   //打开数据库连接
   Conn = new OdbcConnection ("DSN=AMGDM3_SQL;uid=sa;pwd=;");
    Conn.Open ();
   if(Conn.State == ConnectionState .Closed )
   {
    //无法连接数据库服务器
    Console.WriteLine ("数据库服务器已经关闭,暂停服务。");
    return;
   }
   string strSQL = "SELECT * FROM FILE_DIRECTORY WHERE CLASS=0 AND PID=0";
   OdbcDataAdapter adapter = new OdbcDataAdapter (strSQL , Conn);
   ShowDirectory(adapter , "person" , Conn , 0);

  }
  
  public void ShowDirectory(OdbcDataAdapter adapter , string strId , OdbcConnection conn , int nType)
  {
   OdbcDataReader reader = adapter.SelectCommand .ExecuteReader ();
   if(reader.HasRows )
   {
    while(reader.Read ())
    {
     if(ExistChildNode((string)reader["Id"].ToString () , conn , true))
     {
      Console.WriteLine (string.Format ("dir{0}=insFld({1},gFld(/"{2}/",/"" , reader["Id"] , strId , reader["DirName"]));
     }
     else
     {
      Console.WriteLine (string.Format ("dir{0}=insDoc({1},gLnk(0,/"{2}/",/"" , reader["Id"] , strId , reader["DirName"]));
     }
     Console.WriteLine ("main.asp?DicType=Dir");
     Console.WriteLine (string.Format ("&Id={0}/"))/r/n" , reader["Id"]));
     string strSQL;
     strSQL = string.Format ("SELECT * FROM FILE_DIRECTORY WHERE PID={0}" , reader["Id"]);
     OdbcDataAdapter adapter2 = new OdbcDataAdapter (strSQL , conn);
     ShowDirectory(adapter2 , string.Format ("dir{0}" , reader["Id"]) , conn , nType);
    }
   }
   reader.Close ();
  }

  private bool ExistChildNode(string strDeptId , OdbcConnection conn , bool bDept)
  {
   return true;
  }

 }
}

这篇关于.Net数据库访问问题:已有打开的与此连接相关联的 DataReader,必须首先将它关闭。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/316991

相关文章

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable