如果用datareader,就可以用whiel(dr.read())
{}这种方法读出字段里的多条记录,但是用存储过程parameter里好像不好读,我的代码:            //调用存储过程
            SqlCommand cmd = new SqlCommand("RidSel",connect);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("single",SqlDbType.Char,10);
            cmd.Parameters["single"].Direction = ParameterDirection.Output;
            string single = cmd.Parameters["single"].Value.ToString();//single字段里有多条记录,但是现在只能读取到最后一条

解决方案 »

  1.   

    呵呵,没明白我的意思哦,我的意思是不用datareader,而是用parameter读取存储过程里从第一条到最后一条记录都要显示出来
      

  2.   

    如果调用存储过程,Command一定要执行啊。要么用DataReader,要么用Adapter.Fill
      

  3.   

    貌似你这个方法行不通,调用存储过程,如果是单个值可以这样,但是如果是多个值,存储过程返回来的貌似都是table说错了别丢我呵呵
      

  4.   

    我试过了用DataReader读取了,dr=cmd.executereader();用断点看了dr里根本没有任何值
      

  5.   

    如果你是直接返回的 select 结果,不用声明out参数。(oracle游标才需要)Create PROCEDURE Pro_Result
    AS
        Select Top 10 CompanyName From Customers
    GO    
     conn.Open();
     SqlCommand cmd = new SqlCommand();
     cmd.Connection = conn;
     cmd.CommandType = CommandType.StoredProcedure;
     cmd.CommandText = "Pro_Result"; SqlDataReader sr = cmd.ExecuteReader();
     while (sr.Read())
     {
         Console.WriteLine(sr[0]);
         Console.WriteLine(sr[1]);
         Console.WriteLine(sr[2]);
         Console.WriteLine(sr[3]);
         ...     
     }