Форум программистов, компьютерный форум CyberForum.ru

C# и базы данных, ADO.NET

Войти
Регистрация
Восстановить пароль
 
 
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
#1

Проверка на подключение к базе - C#

06.12.2012, 23:28. Просмотров 5624. Ответов 24
Метки нет (Все метки)

Доброго времени суток!

Как проверить, подключен к базе или нет?

Подключаюсь обычно так:
C#
1
2
3
4
5
settings settings = new settings();
string Connectio = @"server=" + settings.textBox1.Text + ";" + "user=" + settings.textBox2.Text +
";" + "database=" + settings.textBox4.Text + ";" + "password=" + settings.textBox3.Text + ";charset=utf8;";
MySqlConnection MyConnection = new MySqlConnection(Connectio);
MyConnection.Open();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nio
5910 / 3313 / 199
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.12.2012, 23:40     Проверка на подключение к базе #2
SuLLeN, выполни запрос
SQL
1
SELECT 1
adm_loro
Заблокирован
07.12.2012, 18:16     Проверка на подключение к базе #3
C#
1
connection.State == ConnectionState.Open
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
07.12.2012, 20:40  [ТС]     Проверка на подключение к базе #4
Цитата Сообщение от nio Посмотреть сообщение
выполни запрос
А что он дает?
nio
5910 / 3313 / 199
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
07.12.2012, 20:48     Проверка на подключение к базе #5
Цитата Сообщение от SuLLeN Посмотреть сообщение
А что он дает?
Если выполняется, значит подключение есть
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
08.12.2012, 09:04  [ТС]     Проверка на подключение к базе #6
Цитата Сообщение от nio Посмотреть сообщение
Если выполняется, значит подключение есть
По сути, так можно любой запрос отправить, а как сделать так, что бы с ошибкой не вылетало, а выдавало в мес.бокс "Нет подключения"?
nio
5910 / 3313 / 199
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 10:54     Проверка на подключение к базе #7
SuLLeN, тебе уже adm_loro показал в посте 3. Но этот способ не самый лучший: если подключение было закрыто по инициативе сервера, или возникли проблемы на транспортном уровне, свойство State этого не отразит.
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
08.12.2012, 11:04  [ТС]     Проверка на подключение к базе #8
Цитата Сообщение от nio Посмотреть сообщение
Но этот способ не самый лучший: если подключение было закрыто по инициативе сервера, или возникли проблемы на транспортном уровне, свойство State этого не отразит.
Какой способ тогда использовать?
nio
5910 / 3313 / 199
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:06     Проверка на подключение к базе #9
SuLLeN, я ни какой не использую. Операцию обращения к БД ставлю в try-catch и этого достаточно
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
08.12.2012, 11:13  [ТС]     Проверка на подключение к базе #10
Попробовал вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
settings settings = new settings();
                string Connectio = @"server=" + settings.textBox1.Text + ";" + "user=" + settings.textBox2.Text +
                ";" + "database=" + settings.textBox4.Text + ";" + "password=" + settings.textBox3.Text + ";charset=utf8;";
                MySqlConnection MyConnection = new MySqlConnection(Connectio);
                MyConnection.Open();
                if (MyConnection.State == ConnectionState.Closed)
                {
                    MessageBox.Show("Подключение отсутствует!", "Ошибка");
                }
                else if (MyConnection.State == ConnectionState.Open)
                {
                    //Запись настроик в файл из TextBox.ов
                    StreamWriter sw = new StreamWriter("settings");
                    sw.WriteLine(textBox1.Text);
                    sw.WriteLine(textBox2.Text);
                    sw.WriteLine(textBox3.Text);
                    sw.WriteLine(textBox4.Text);
                    sw.Close();
                    Form1 frm = (Form1)this.Owner;
                    frm.load_buyer();
                    frm.load_discount();
                    frm.load_product();
                    frm.load_seller();
                    Close();
                }
Мускул специально отключил, а программа все равно сработала будто мускул работает.

Добавлено через 46 секунд
Цитата Сообщение от nio Посмотреть сообщение
Операцию обращения к БД ставлю в try-catch и этого достаточно
Покажи, пожалуйста, как ты это делаешь?
nio
5910 / 3313 / 199
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:32     Проверка на подключение к базе #11
SuLLeN, а ты вообще какую-то фигню делаешь.
перевожу на русский:
если соединение с БД закрыто - выдать сообщение
иначе
если соединение открыто - записать данные в файл (и еще куча каких-то малопонятных телодвижений)
а я тебе про это рассказывал http://msdn.microsoft.com/ru-ru/libr...utescalar.aspx
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
08.12.2012, 11:35  [ТС]     Проверка на подключение к базе #12
Вот еще что откопал:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
settings settings = new settings();
            string Connectio = @"server=" + settings.textBox1.Text + ";" + "user=" + settings.textBox2.Text +
            ";" + "database=" + settings.textBox4.Text + ";" + "password=" + settings.textBox3.Text + ";charset=utf8;";
            MySqlConnection sqlConn = new MySqlConnection(Connectio);
            MySqlCommand command = sqlConn.CreateCommand();
            MySqlDataReader Reader;
            command.CommandText = "SELECT 1";
            try
            {
                sqlConn.Open();
                Reader = command.ExecuteReader();
            }
            catch
            {
                MessageBox.Show("Нет связи с БД!", "Ошибка подключения");
            }
            if (checkBox1.Checked == true)
            {
                //Запись настроик в файл из TextBox.ов
                StreamWriter sw = new StreamWriter("settings");
                sw.WriteLine(textBox1.Text);
                sw.WriteLine(textBox2.Text);
                sw.WriteLine(textBox3.Text);
                sw.WriteLine(textBox4.Text);
                sw.Close();
                Form1 frm = (Form1)this.Owner;
                frm.load_buyer();
                frm.load_discount();
                frm.load_product();
                frm.load_seller();
                sqlConn.Close();
                Close();
            }
            else if (checkBox1.Checked == false)
            {
                Form1 frm = (Form1)this.Owner;
                frm.load_buyer();
                frm.load_discount();
                frm.load_product();
                frm.load_seller();
                sqlConn.Close();
                Close();
            }
После catсh все остальное ведь не выполняется?
nio
5910 / 3313 / 199
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:38     Проверка на подключение к базе #13
SuLLeN, я тебе ещё раз говорю: ты делаешь фигню какую-то нелогичную. Зачем тебе контролировать подключение к БД, если ты пишешь в файл?
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 791
08.12.2012, 11:38  [ТС]     Проверка на подключение к базе #14
Цитата Сообщение от nio Посмотреть сообщение
а ты вообще какую-то фигню делаешь.
Это просто кусок от кода был
Ты его целиком не видел, поэтому не понял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2012, 11:40     Проверка на подключение к базе
Еще ссылки по теме:
C# Подключение к базе MSSQL
C# Подключение к базе данных FireBird
C# Oracle подключение к базе с логином на русском
C# Подключение к базе на новой машине
C# Подключение к базе Odbc сервер

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nio
5910 / 3313 / 199
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:40     Проверка на подключение к базе #15
SuLLeN, все равно тебе эта проверка не нужна. посмотри ссылку, которую я дал
Yandex
Объявления
08.12.2012, 11:40     Проверка на подключение к базе
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru