Я работаю над личным проектом, использующим БД Microsoft SQL и веб-слой для вызовов API отдыха. Я пытаюсь получить int32s и строки обратно из базы данных, используя SqlDataReader. Когда я читаю в Strings, ошибки нет, однако при попытке прочитать целые числа я получаю следующее
`Исключение: System.IndexOutOfRangeException: 'StudentID'
public StudentAccount FindStudentByID(int id)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
String sql = "SELECT FirstName, LastName,StudentBiography FROM [PersonTest].[dbo].[StudentAccounts] WHERE StudentID = @p1";
StudentAccount matchingStudent = new StudentAccount();
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.Parameters.Add("@p1", SqlDbType.Int).Value = id;
cmd.CommandType = CommandType.Text;
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
matchingStudent.StudentID = reader.GetInt32(reader.GetOrdinal("StudentID"));
matchingStudent.FirstName = reader["FirstName"].ToString();
matchingStudent.LastName = reader["LastName"].ToString();
matchingStudent.Biography = reader["StudentBiography"].ToString();
matchingStudent.CollegeID = reader.GetInt32(reader.GetOrdinal("COLLTB_CollegeID"));
}
reader.Close();
return matchingStudent;
}
}
}
Таблица StudentAccounts выглядит следующим образом:
StudentAccounts (StudentID, FirstName, LastName, StudentBiography, CollTB_CollegeID)
StudentID
является первичным ключом.
Я заранее прошу прощения, если испортил формат или что-то еще, это мой первый пост на этом форуме. Спасибо!