不清楚,只知道它是通過sqlcommand對象調用executereader方法創建的

解决方案 »

  1.   

    SqlDataReader只有一个构造函数internal SqlDataReader( SqlCommand cmd );
    这个构造函数可访问的级别是internal,在外边是访问不到的,所以不可也在外部实例化。
      

  2.   

    请问 OneDotRed(武装到眼神) 你从那边知道SqlDataReader只有一个构造函数。我没有发现
      

  3.   

    这个是msdn上的说明
    (具体地址:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemDataSqlClientSqlDataReaderClassTopic.htm):备注
    若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不直接使用构造函数。
      

  4.   

    cdo(cdo)这个我知道,我问的是请问 OneDotRed(武装到眼神) 你从那边知道SqlDataReader只有一个构造函数。我没有发现
      

  5.   

    可以这样来理解:
    这个类本身的数据来源是一个Command对象的执行结果,建立它本身并不能得到数据,而是用ExecuteReader之类的方法才能使得一个DataReader具有它本身的特性.
    对于这样的一个类来说,建立一个没有能力得到数据的对象有什么意义啊,所以就没有构造函数了,直接是另一个对象的一个方法来建立对象就足够了.
      

  6.   

    而且我觉的如果访问限定符"internal"代表了"public"和"protected"的访问性组合为什么“在外边是访问不到的,所以不可也在外部实例化。”
      

  7.   

    而且我觉的如果访问限定符"internal"代表了"public"和"protected"的访问性组合.....
    ------------------------------
    不是这个意思.你的理解有不正确.internal不是这个意思.
      

  8.   

    ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdatasqlclientsqldatareaderclasstopic.htm
      

  9.   

    这东西好像应该这么用:
    System.Data.SqlClient.SqlConnection s_c1 = new SqlConnection();
    s_c1.ConnectionString = classes.p_class.conn_string;
    s_c1.Open();
    string sql1 = "select * from service_1 where (UPPER(LTRIM(RTRIM(service_id))) = @service_id)";
    SqlCommand cmd1 = new SqlCommand(sql1,s_c1);
    cmd1.Parameters.Add("@service_id",service_id);
    SqlDataReader sdr1;
    sdr1 = cmd1.ExecuteReader();