“IndexOutOfRangeException"错误.知道为什么吗?

本文关键字:为什么 错误 IndexOutOfRangeException quot | 更新日期: 2023-09-27 18:16:53

我在我的应用程序代码中有这段代码

using (SqlConnection oConn = new SqlConnection(ConfigurationManager.ConnectionStrings["data.user"].ToString()))
{
    oConn.Open();
    using (SqlCommand oCmd = new SqlCommand(strQuery, oConn))
    {
        oCmd.CommandType = CommandType.StoredProcedure;
        oCmd.Parameters.Add(new SqlParameter("@J_ID", SqlDbType.NVarChar, 50));
        oCmd.Parameters["@J_ID"].Value = JobID;
        using (SqlDataReader drJobDetails = oCmd.ExecuteReader())
        {
            if (drJobDetails.Read())
            {
                Jobs oJob = new Jobs();
                oJob.JobIDNumber = 1;
                oJob.JobID = drJobDetails[drJobDetails.GetOrdinal("J_ID")] as string;
                oJob.JobTitle = drJobDetails[drJobDetails.GetOrdinal("J_Title")] as string;
                oJob.JobShortDescription = "";
                oJob.JobDescription = drJobDetails[drJobDetails.GetOrdinal("J_Description")] as string;
                oJob.JobLocation = drJobDetails[drJobDetails.GetOrdinal("BDS_Name")] as string;
                oJob.JobHREmail = drJobDetails[drJobDetails.GetOrdinal("J_HREmail")] as string;
                oJob.JobDateAdded = drJobDetails[drJobDetails.GetOrdinal("J_DateAdded")] as DateTime? ?? default(DateTime);
                oJob.JobUserAdded = drJobDetails[drJobDetails.GetOrdinal("J_UserAdded")] as string;
                oJob.JobCloseDate = drJobDetails[drJobDetails.GetOrdinal("BJ_ClosedDate")] as DateTime? ?? default(DateTime);
                oJob.JobDateUpdated = drJobDetails[drJobDetails.GetOrdinal("J_DateUpdated")] as DateTime? ?? default(DateTime);
                oJob.JobUserUpdated = drJobDetails[drJobDetails.GetOrdinal("J_UserUpdated")] as string;
                oJob.JobActive = drJobDetails[drJobDetails.GetOrdinal("J_Active")] as int? ?? default(int);
                oJob.JobVideo = drJobDetails[drJobDetails.GetOrdinal("J_Video")] as string;
                return oJob;
            }
        }
    }
}

我得到这个错误:

[IndexOutOfRangeException: J_Video]

如果我删除J_Video它的工作很好,所以不确定什么可能是它的问题。我是SQL和c#的新手,所以任何提示为什么会出现这个错误将是伟大的!

“IndexOutOfRangeException"错误.知道为什么吗?

这意味着DataReader没有列名称J_Video。这一行引用了该列:

oJob.JobVideo = drJobDetails[drJobDetails.GetOrdinal("J_Video")] as string;

检查您的查询strQuery,看看这列是否被选中(SELECT J_Video, ... FROM ...),并确保拼写正确。

检查以确保查询返回J_Video列。我认为查询没有返回它