Мой код пытается проверить, является ли сервер PostgreSQL работающим и доступным по заданным учетным данным для данной базы данных. Используйте Npg sql NuGet. Если все данные, а также IP, порт, пользователь, пароль и база данных верны, код возвращает значение true.
Вот код:
public Boolean InsertInToPGSQL()
{
var pg_con_string = "Server=" + sqlinsertserver + ";" + "Port=" + sqlinsertport + ";" + "Database=" + sqlinsertdatabase + ";" + "User ID=" + sqlinsertusername + ";" + "Password=" + sqlinsertpassword + ";";
var pg_connetion = new NpgsqlConnection(pg_con_string);
try
{
if (pg_connetion != null)
{
pg_connetion.Open();
pg_connetion.Close();
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
}
Проблема заключается в том, что если я напишу IP-адрес, на котором не работает сервер, или неверный порт, или неправильный пользователь / пароль, база данных, я всегда получаю:
pg_connetion.Open();
Ошибка:
Система .NullReferenceException: 'Ссылка на объект не установлена для экземпляра объекта.'
Проблема в том, что catch (Exception) не перехватывает эту ошибку и возвращает простое false. Мне не нужно иметь дело с типом ошибок, таких как неверные учетные данные или IP / порт, просто нужно иметь значение true при успешном подключении к серверу PostgreSQL и false в любом другом случае.
Как бороться с этой ошибкой ?