SQL阅读器使用c#

时间:2016-10-14 08:11:07

标签: c# sql sql-server

我的存储过程中有2个select语句,我使用sql reader读取我的数据,下面是我的代码,我希望阅读第2个表,任何想法怎么做?

public BOL.HomeAnnouncement get_total(string subs_cd, string timee)
{
    oConnection.ConnectionString = ConnectionString;
    oConnection.Open();
    BOL.HomeAnnouncement t_list = new BOL.HomeAnnouncement();
    SqlCommand oCommand = new SqlCommand();
    oCommand.Connection = oConnection;
    oCommand.CommandType = CommandType.StoredProcedure;
    oCommand.CommandText = "TMS";
    oCommand.Parameters.Add(new SqlParameter("@SUBS", subs_cd));
    oCommand.Parameters.Add(new SqlParameter("@time_in", timee));
    SqlDataReader oReader = oCommand.ExecuteReader();
    while (oReader.Read())
    {
        t_list.Name = oReader.IsDBNull(oReader.GetOrdinal("Total_Employee")) ? "" : oReader["Total_Employee"].ToString();
        t_list.status = oReader.IsDBNull(oReader.GetOrdinal("Total_Present")) ? "" : oReader["Total_Present"].ToString();
        t_list.Title = oReader.IsDBNull(oReader.GetOrdinal("Total_Absent")) ? "" : oReader["Total_Absent"].ToString();
    }
    oReader.Close();
    oConnection.Close();
    return t_list;
}


  t_list.Name = oReader.IsDBNull(oReader.GetOrdinal("Table2.Total_Employee")) ? "" : oReader["Table2.Total_Employee"].ToString();
  t_list.status = oReader.IsDBNull(oReader.GetOrdinal("Table2.Total_Present")) ? "" : oReader["Table2.Total_Present"].ToString();
  t_list.Title = oReader.IsDBNull(oReader.GetOrdinal("Table2.Total_Absent")) ? "" : oReader["Table2.Total_Absent"].ToString();

尝试了这个但没有工作.. table2.Total_Employee

修改

返回错误:

System.IndexOutOfRangeException: Table2.Total_Employee

1 个答案:

答案 0 :(得分:0)

发生错误后:

错误原因:

当您作为参数传递的列不存在时,此异常已返回GetOrdinal的方法SqlDataReader

如果你去here,你可以阅读MSDN说明。

<强>解决方案:

我认为您的存储过程输出是您要在SqlDataReader中使用的不同方面。请发布存储过程代码以获取进一步的帮助