我有个存储过程。是公交查询的
简单写下:CREATE  proc AllInquiry(@StartStops varchar(2048),@EndStops varchar(2048))
as
begin
    exec GInquiryT0 @StartStops,@EndStops--(这里返回的数据有3列:起点,终点,路线)
    if(@@rowcount=0)
    begin
        exec GInquiryT1 @StartStops,@EndStops--(这里返回的数据有5列:起点,路线1,中转站,路线2,路线,终点)
        if(@@rowcount=0)
        begin
            exec GInquiryT2_1 @StartStops,@EndStops---(这里返回的数据有7列:起点,路线1,中转站1,路线2,中转站2,路线3,终点)
        end
    end
end我就是把这3个存储过程弄成了一个,首先查询无换乘情况,然后是1次换乘,接下来就是二次换乘。
我在C#中用一个方法来接收,发现数据返回的参数不同,不知道如何处理。

解决方案 »

  1.   

    会自动返回一个数据集的,你放到datatable里面就行了。根据返回的数据集访问数据就行。
      

  2.   


    如果我是用泛型来接收呢?我之前是这样写的,写了一半,发现不行了。 public IList<GRouteT0Info> AllInquiry(GRouteT0Info gRouteT0Info)
            {
                SqlParameter[] sqlParameter = {
                                                  new SqlParameter("@StartStops", gRouteT0Info.StartStops),
                                                  new SqlParameter("@EndStops", gRouteT0Info.EndStops)
                                              };
                IList<GRouteT0Info> groute = new List<GRouteT0Info>();
                using (SqlDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "AllInquiry", sqlParameter))
                {
                    while (dataReader.Read())
                    {
                        GRouteT0Info gr = new GRouteT0Info(dataReader.GetString(0),dataReader.GetString(1),);
                    }
                }
                return null;
            }
      

  3.   

    把数据放到DataSet里
    存储过程多,每个一个table
      

  4.   

    返回的DataSet里面会有3个DataTable 用DataSet.Tables[index]获得