Я повсюду искал ответ на этот вопрос и так и не нашел его.
По сути, я пытаюсь подключиться к серверу базы данных через графический интерфейс. Мой начальник хочет иметь возможность вводить все поля, а затем проверять, действительны ли они, а затем, если есть недействительные записи, он хочет, чтобы я сделал текст красным, указывая, что поле недействительно. У меня есть оператор try catch ClassNotFoundException и SQLException. Поскольку необходимо проверить несколько полей, я попытался использовать набор операторов if для проверки информации о соединении. Вот код ниже, надеюсь, это имеет смысл...
//The cancel boolean values in this code are used elsewhere to regulate the Threads
try
{
//attempt connection here
}
catch(ClassNotFoundException | SQLException e)
{
String[] errors = new String[4]; //This will create a String array of the errors it catches
//and will later get called into a method that displays
//the messages in a JOptionPane.showMessageDialog()
if (e.getMessage().startsWith("The TCP/IP connection to the host"))
{
errors[0] = "SQL CONNECTION FAILED: Please check the server URL you entered to make sure it is correct.";
cancel = true;
mGUI.serverNameTextField.setForeground(Color.RED);
}
if (e.getMessage().startsWith("Login failed for user"))
{
errors[1] = "LOGIN FAILED: You do not have sufficient access to the server.";
cancel = true;
}
if (e.getMessage().startsWith("Cannot open database"))
{
errors[2] = "SQL CONNECTION FAILED: Please check the database name you entered to make sure it is correct.";
cancel = true;
mGUI.dbNameTextField.setForeground(Color.RED);
}
mGUI.reportErrors(errors); //Method where it reports the String[] array of errors
//However, the 'errors' parameter only returns one error
//message at a time, which is the problem.
Спасибо за любую помощь!
****РЕДАКТИРОВАТЬ******
Я нашел решение, поэтому надеюсь, что оно кому-нибудь поможет. Я изменил свои операторы if, добавив аргумент AND, проверяющий конкретный код ошибки. Вы можете найти код ошибки, установив точку останова и просмотрев перспективу отладки, или вы можете сделать то, что я сделал, и установить оператор печати, чтобы увидеть код ошибки. Вот оператор печати:
System.out.println(((SQLException) e).getErrorCode());
Вот мои новые утверждения:
try
{
//attempt connection here
}
catch(SQLException | ClassNotFoundException e)
{
if (e instanceof SQLServerException && ((SQLServerException) e).getErrorCode() == 0)
{
//code here
}
else{
//code here
}
System.out.println(((SQLException) e).getErrorCode()); //Here is the print statement to see the error code.
if (e instanceof SQLServerException && ((SQLServerException) e).getErrorCode() == 4060)
{
//code here
}else{
//code here
}
if(cancel != true)
{
//code here
}
}
Подробнее здесь: https://stackoverflow.com/questions/174 ... tion-types
Несколько операторов catch с одинаковыми типами исключений ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1764230815
Anonymous
Я повсюду искал ответ на этот вопрос и так и не нашел его.
По сути, я пытаюсь подключиться к серверу базы данных через графический интерфейс. Мой начальник хочет иметь возможность вводить все поля, а затем проверять, действительны ли они, а затем, если есть недействительные записи, он хочет, чтобы я сделал текст красным, указывая, что поле недействительно. У меня есть оператор try catch ClassNotFoundException и SQLException. Поскольку необходимо проверить несколько полей, я попытался использовать набор операторов if для проверки информации о соединении. Вот код ниже, надеюсь, это имеет смысл...
//The cancel boolean values in this code are used elsewhere to regulate the Threads
try
{
//attempt connection here
}
catch(ClassNotFoundException | SQLException e)
{
String[] errors = new String[4]; //This will create a String array of the errors it catches
//and will later get called into a method that displays
//the messages in a JOptionPane.showMessageDialog()
if (e.getMessage().startsWith("The TCP/IP connection to the host"))
{
errors[0] = "SQL CONNECTION FAILED: Please check the server URL you entered to make sure it is correct.";
cancel = true;
mGUI.serverNameTextField.setForeground(Color.RED);
}
if (e.getMessage().startsWith("Login failed for user"))
{
errors[1] = "LOGIN FAILED: You do not have sufficient access to the server.";
cancel = true;
}
if (e.getMessage().startsWith("Cannot open database"))
{
errors[2] = "SQL CONNECTION FAILED: Please check the database name you entered to make sure it is correct.";
cancel = true;
mGUI.dbNameTextField.setForeground(Color.RED);
}
mGUI.reportErrors(errors); //Method where it reports the String[] array of errors
//However, the 'errors' parameter only returns one error
//message at a time, which is the problem.
Спасибо за любую помощь!
[b]****[/b]РЕДАКТИРОВАТЬ[b]******[/b]
Я нашел решение, поэтому надеюсь, что оно кому-нибудь поможет. Я изменил свои операторы if, добавив аргумент AND, проверяющий конкретный код ошибки. Вы можете найти код ошибки, установив точку останова и просмотрев перспективу отладки, или вы можете сделать то, что я сделал, и установить оператор печати, чтобы увидеть код ошибки. Вот оператор печати:
System.out.println(((SQLException) e).getErrorCode());
Вот мои новые утверждения:
try
{
//attempt connection here
}
catch(SQLException | ClassNotFoundException e)
{
if (e instanceof SQLServerException && ((SQLServerException) e).getErrorCode() == 0)
{
//code here
}
else{
//code here
}
System.out.println(((SQLException) e).getErrorCode()); //Here is the print statement to see the error code.
if (e instanceof SQLServerException && ((SQLServerException) e).getErrorCode() == 4060)
{
//code here
}else{
//code here
}
if(cancel != true)
{
//code here
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/17414148/multiple-catch-statements-with-the-same-exception-types[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия