BuildQueryCommand 这个方法的问题。
 贴出来。
 总觉得你这么写有点别扭。
 command是一个全居变量吧

解决方案 »

  1.   

    private SqlCommand BuildQueryCommand(string storedProcName, IDataParameter[] parameters)
    {
    SqlCommand command = new SqlCommand( storedProcName, connection );
    command.CommandType = CommandType.StoredProcedure;
    foreach (SqlParameter parameter in parameters)
    {
    command.Parameters.Add( parameter );
    }
    return command;}这个是BuildQueryCommand方法代码
      

  2.   

    如下
     command = BuildQueryCommand( storedProcName, parameters );
     returnReader = command.ExecuteReader();
     因为你的BuildQueryCommand返回了一个局部变量command.(定义在你的方法内部)
     所以你必须要让你的全局的command接受这个return的command才可以。 
     看看好不好用。
      

  3.   

    但是command在实际上我已经定义一个全局变量,只不过加了保护封装而以。
    private SqlCommand  command =new SqlCommand(); protected SqlCommand Command
    {
    get
    {
    return command;
    }
    }-----------------------------------在另一个方法我在重新定义了
    SqlCommand command = new SqlCommand( storedProcName, connection );
    会出现错误马
      

  4.   

    你的BuildQueryCommnad构造的command是存发在这个方法内部的局部变量command里面的,如果不把它传出来,有什么用呢?看下面的例子。
      int i = 1;//相当于你的全局变量
      aa();
      Console.WriteLine(i);  static int aa()
    {
    int i;//相当于你的局部变量
    i = 3;
    return i;
    }

    你把上面的程序变成
     int i = 1;
       i=aa();
      Console.WriteLine(i);
    结果肯定不一样的。
      

  5.   

    OpenConnection();   //这句是哪来的?其他地方没错。也不用声明command为全局变量。
    不过Query 和 BuildQueryCommand方法都该是放在基类里的,在派生类里再具体调用Query(sp_Name,parameters)