Npgsql и обработка ошибок подлючения к серверу Postgre SQL
Не работал Npgsql никогда. Со стандартными плагинами для подключения к SQL Server ни когда не испытал проблем. Здесь же в тупике. Делаю самое элементарное - форму авторизации. При нажатии на кнопку, проходит подлкючение. Но как обрабатывать исключения в нем? Т.е. сейчас я не могу разблокировать кнопку после проверки подключение, т.к. получаю "Вызвано исключение: "Npgsql.PostgresException" в mscorlib.dll".
Часть кода:
async Task<bool> CheckConnection()
{
using (NpgsqlConnection conn = new NpgsqlConnection(MMVar.ConString))
{
btn_login.Enabled = false;
conn.Open();
if (conn.State == ConnectionState.Open)
{
Console.WriteLine("True");
frm_main f_Main = new frm_main();
Visible = false;
f_Main.Visible = true;
return true;
}
else
{
btn_login.Enabled = true;
Console.WriteLine("false");
return false;
}
}
}
try
{
CheckConnection();
}
catch (Exception ex)
{
btn_login.Enabled = true;
Console.WriteLine($"Error: {ex.Message}");
}
Соответвенно, в случаи успеха проблем нет...
Был бы очень признателен, если поправите и так же тыкните меня носом в нужный раздел wiki по npgsql, так как там я ничего не могу толкового обнаружить...
Ответы (1 шт):
Не на том месте проверяю исключения... Получил, что хотел.
using (NpgsqlConnection conn = new NpgsqlConnection(MMVar.ConString))
{
try
{
btn_login.Enabled = false;
conn.Open();
if (conn.State == ConnectionState.Open)
{
Console.WriteLine("True");
frm_main f_Main = new frm_main();
Visible = false;
f_Main.Visible = true;
}
else
{
btn_login.Enabled = true;
Console.WriteLine("false");
}
} catch (Exception ex)
{
var answer = ex.ToString();
if (answer.Contains("28P01")) Console.WriteLine("Неверный пароль");
if (answer.Contains("3D000")) Console.WriteLine("База данных не найдена");
else Console.WriteLine($"{ex.Message}");
btn_login.Enabled = true;
}
}