Обработка исключений не работает
у меня есть поисковый код для базы данных SQL, когда я ищу данные, которые существуют, он работает отлично, но если я ищу что-то, чего нет в базе данных, обработка исключений не работает.
Что я уже пробовал:
//Search from Student table in srsjason database //BY ID// public Student SearchbyID(string sid) { Student SOB = new Student(); try { string sql = "select * from Student where Student_ID = '" + sid + "' "; SqlCommand cmd = new SqlCommand(sql, m_con); m_con.Open(); SqlDataReader dreader = cmd.ExecuteReader(); if (dreader.Read()) { SOB.setStudentID(dreader[0].ToString()); SOB.setTitle(dreader[1].ToString()); SOB.setFulname(dreader[2].ToString()); SOB.setAddress(dreader[3].ToString()); SOB.setContact(Convert.ToInt32(dreader[4].ToString())); //Int SOB.setemail(dreader[5].ToString()); SOB.setDOB(Convert.ToDateTime(dreader[6].ToString())); //DateTime SOB.setUN(dreader[7].ToString()); SOB.setPW(dreader[8].ToString()); } else { SOB.setStudentID(null); } dreader.Close(); } catch (Exception ex) { MessageBox.Show(" No Student Record Found!!"); } finally { m_con.Close(); } return SOB; }
F-ES Sitecore
Как вы думаете, где будет выброшено исключение, если ничего не существует?
Кроме того, что делать, если открытие соединения вызывает исключение? Вы попытаетесь закрыть его в последнем блоке.
Используйте отладчик для пошагового просмотра кода, чтобы узнать, что он делает. Если вы хотите получить сообщение, когда ничего не найдено, то поместите его в раздел "else" для "if (dreader. Read())"
Member 13049972
не могли бы вы показать мне, как доработать код?
F-ES Sitecore
Что-то вроде
конструкторы нашли = ложь;
Студенческий всхлип = новый студент();
пробовать
{
string sql = " select * from Student where Student_ID = '" + sid + "' ";
SqlCommand cmd = new SqlCommand(sql, m_con);
m_con.Открыть();
SqlDataReader dreader = cmd.Метода executereader();
если (dreader. Read())
{
нашли = истина;
Соб.setStudentID(dreader[0].Метод toString());
SOB. setTitle (dreader[1].Метод toString());
Соб.setFulname(dreader[2].Метод toString());
SOB. setAddress(dreader[3].Метод toString());
Соб.setContact(конвертировать.ToInt32 (dreader[4].ToString ())); / / Int
SOB. setemail(dreader[5].Метод toString());
Соб.setDOB(конвертировать.ToDateTime (dreader[6].ToString ())); / / DateTime
Соб.Сетунь(dreader[7].Метод toString());
SOB. setPW (dreader[8].Метод toString());
}
ещё
{
Соб.setStudentID(нуль);
}
дредер.Закрывать();
}
поймать (исключение бывший)
{
Ящик для сообщений.Show ("Ошибка");
}
наконец
{
m_con.Закрывать();
}
если (! найдено)
{
Ящик для сообщений.Показать ("Запись Студента Не Найдена!!");
}
ответный всхлип;
Однако в идеале все, что вызывает SearchbyID, должно показывать сообщение, и вы должны сделать так, чтобы SearchbyID возвращал null, если ничего не найдено.
Bryian Tan
Приятно!!! Я думаю, что это должно сделать это.