С# SQL: попытка попытки подключения к sql

Я пытаюсь получить номер попытки SQLConnection, чтобы сообщить пользователю об этих попытках. Ниже вы можете увидеть код, в котором должно происходить волшебство. «i» будет номером попытки. Соединение «con» выдает много исключений SqlException, но я не могу их поймать, как показано ниже. «databaseConnection» представляет строку подключения. В настоящее время он пуст для целей тестирования. Бьюсь об заклад, что я что-то упускаю, но я не могу понять, что, так как я новичок в программировании SQL на С#. «txtProgressbarWorking» — это метка в пользовательском интерфейсе.

                int i = 1;
                con = new SqlConnection(databaseConnection);
                try
                {
                    con.Open();
                }
                catch(SqlException s)
                {
                    txtProgressbarWorking.Content = "Connecting... " + (++i);
                }

person Spidobot    schedule 30.03.2016    source источник


Ответы (1)


В этом коде есть несколько ошибок:

1) Вы вызываете это в каком-то цикле? Если нет, ваша переменная i не будет увеличиваться.

2) SqlConnection.Open() выдает несколько видов исключений, а не только SqlException, и я предполагаю, что вы «не можете их поймать», как вы упомянули. В идеале вы должны указать каждое исключение или поймать System.SystemException более высокого уровня.

3) Ваш код для увеличения индикатора выполнения находится в блоке перехвата вашего обработчика исключений и будет выполняться только в том случае, если исключение перехвачено. Если вы на самом деле вызываете этот код в цикле, вам лучше вместо этого переместить код из блока catch в блок try.

4) Ваш ++i должен быть i++, чтобы i увеличивалось после оператора; либо так, либо инициализируйте i нулем вместо 1. Как у вас сейчас, первое значение из i в вашем блоке catch будет 2.

Я предлагаю вам взглянуть на [документацию MSDN по методу SqlConnection.Open()][1] https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.open%28v=vs.110%29.aspx

person J.D. Wassil    schedule 30.03.2016