//请问这里的 params IDataParameter[] parameters如何解释
   public object GetProcScalar(string storedProcName, params IDataParameter[] parameters)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            object result;
            connection.Open();
            SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
            command.CommandTimeout = comTime;
            result = command.ExecuteScalar();
            return result;
        }
    }    private void con(DbConnection connection)
    {
      这里是否可以这样转换类型
      OracleConnection connection=(OracleConnection)connection;      SqlConnection connection=(SqlConnection)connection;
     }

解决方案 »

  1.   


    //请问这里的 params IDataParameter[] parameters如何解释//这个是参数数组来的,例如:parmater SqlParameter[] parmater = {
         new SqlParameter("@XXX1",Value1),
         new SqlParameter("@XXX2",Value2)
    };
      

  2.   

    string strSql = "select * from Book where Id=@id";
                SqlParameter[] param = new SqlParameter[] { 
                    new SqlParameter ("@id",id )
                };
                SqlDataReader r = DBHelper.getDataReader(strSql, param);
    就是把你的参数放在参数数组里面再传到你的方法里面。楼主懂了吗???
      

  3.   

    SqlDataReader r = DBHelper.getDataReader(strSql, param);
      

  4.   

    你的代码确实有些问题,你是想做一个支持各种数据库的通用DBHelper?还是做一个只针对MSSQL的DBHelper?你的参数用用 IDataParameter[],但内部却用SqlConnection,这样oracle参数可以传递进来,但最终要抛出异常,如果是针对mssql的,还不如参数改成SqlParameter[],如果是针对通用的,那内部Connection就要修改为通用的数据库连接了,而且还需要用一些工厂方法,因为通用的connection是接口,不能new。
      

  5.   

    //主要是询问这两种有何区别的
     public object GetProcScalar(string storedProcName, params IDataParameter[] parameters)
        {
        }
     public object GetProcScalar(string storedProcName,IDataParameter[] parameters)
        {
        }
      

  6.   

    调用方法肯定不一样呀,一个是只有一个参数,需要先将各个数据库参数放在一个变量里。
    一个是可以想string.format("{0}{1}{2}",1,2,3)一样,后面跟若干个参数