由于查询的SQL语句需要查找的项不一样,所以不确定他要返回dataReader有多少,那位高手指点一下

解决方案 »

  1.   

    倒推一下:
    由于sqldatareader实例化的时候必须通过:mysqlcommand.executereader()方法(微软规定的,mysqlcommand是sqlcommand一个实例。),而sqlcommand的构造函数初始化是这个样子的:
    sqlcommand(querystring,conntion)。
    倒退到这里,我觉得应该是querystring的问题。。哈哈。既然这样,可以写一个封装好的类,接收查询参数,然后返回一个字符串作为sqlcommand的查询字符串。
    不好意思。偶刚刚开始学习呵呵。
      

  2.   

    你可以自己构建参数列表,以下代码供你参考://这个方法用来构建参数
     private static void PrepareCommand(string procName,SqlTransaction trans,SqlParameter[] parms)
             {
                  cmd.Connection = con;
                  cmd.CommandText = procName;
                  if(trans != null)
                       cmd.Transaction = trans;
                  cmd.CommandType = CommandType.StoredProcedure;
                  if(parms!=null)
                  {
                       foreach (SqlParameter parm in parms)
                           cmd.Parameters.Add(parm);
                  }
             }
    //以下方法用来返回多种SqlDataReader
    #region 返回SqlDataReader。
             ///<summary>
             ///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。
             ///</summary>
             ///<param name="procName">存储过程</param>
             ///<param name="parms">SqlParameter数组</param>
             ///<returns>SqlDataReader对象</returns>
             public SqlDataReader DataReader(string procName)
             {
                  SqlDataReader dr = null;
                  PrepareCommand(procName,null,null);
                  OpenConnection();
                  dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                  return dr ;
             }
     
             ///<summary>
             ///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。
             ///</summary>
             ///<param name="procName">存储过程</param>
             ///<param name="parms">SqlParameter数组</param>
             ///<returns>SqlDataReader对象</returns>
             public SqlDataReader DataReader(string procName,SqlParameter[] parms)
             {
                  SqlDataReader dr = null;
                  PrepareCommand(procName,null,parms);
                  OpenConnection();
                  dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                  cmd.Parameters.Clear();
                  return dr ;
             }
     
             ///<summary>
             ///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。
             ///</summary>
             ///<param name="procName">存储过程</param>
             ///<param name="trans">SQL Server 数据库中处理的 Transact-SQL 事务</param>
             ///<returns>SqlDataReader对象</returns>
             public SqlDataReader DataReader(string procName,SqlTransaction trans)
             {
                  SqlDataReader dr = null;
                  PrepareCommand(procName,trans,null);
                  OpenConnection();
                  dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                  return dr ;
             }
     
             ///<summary>
             ///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。
             ///</summary>
             ///<param name="procName">存储过程</param>
             ///<param name="parms">SqlParameter数组</param>
             ///<param name="trans">SQL Server 数据库中处理的 Transact-SQL 事务</param>
             ///<returns>SqlDataReader对象</returns>
             public SqlDataReader DataReader(string procName,SqlParameter[] parms,SqlTransaction trans)
             {
                  SqlDataReader dr = null;
                  PrepareCommand(procName,trans,parms);
                  OpenConnection();
                  dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                  cmd.Parameters.Clear();
                  return dr ;
             }
             #endregion