Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/211: Рейтинг темы: голосов - 211, средняя оценка - 4.81
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855

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

06.12.2012, 23:28. Показов 41668. Ответов 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();
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2012, 23:28
Ответы с готовыми решениями:

Подключение к базе
Подскажите пожалуйста,где я ошибаюсь.. Хочу установить подключение к базе..Должен быть реализован подход ООП 1 вариант не рабочий ...

Подключение к базе
Добрый день. Имеется база на sql server 2008 r2. Есть написанная программа, в которой подключение осуществляется таким образом: в...

Подключение к базе
Привет всем! Я делаю регистрацию, уже писалось в другой теме. Сделал Дату рождения (взял немного кода с другого источника). Сам копался и...

24
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.12.2012, 23:40
SuLLeN, выполни запрос
SQL
1
SELECT 1
0
Заблокирован
07.12.2012, 18:16
C#
1
connection.State == ConnectionState.Open
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
07.12.2012, 20:40  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
выполни запрос
А что он дает?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
07.12.2012, 20:48
Цитата Сообщение от SuLLeN Посмотреть сообщение
А что он дает?
Если выполняется, значит подключение есть
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
08.12.2012, 09:04  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
Если выполняется, значит подключение есть
По сути, так можно любой запрос отправить, а как сделать так, что бы с ошибкой не вылетало, а выдавало в мес.бокс "Нет подключения"?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 10:54
SuLLeN, тебе уже adm_loro показал в посте 3. Но этот способ не самый лучший: если подключение было закрыто по инициативе сервера, или возникли проблемы на транспортном уровне, свойство State этого не отразит.
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
08.12.2012, 11:04  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
Но этот способ не самый лучший: если подключение было закрыто по инициативе сервера, или возникли проблемы на транспортном уровне, свойство State этого не отразит.
Какой способ тогда использовать?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:06
SuLLeN, я ни какой не использую. Операцию обращения к БД ставлю в try-catch и этого достаточно
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
08.12.2012, 11:13  [ТС]
Попробовал вот так:
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 и этого достаточно
Покажи, пожалуйста, как ты это делаешь?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:32
SuLLeN, а ты вообще какую-то фигню делаешь.
перевожу на русский:
если соединение с БД закрыто - выдать сообщение
иначе
если соединение открыто - записать данные в файл (и еще куча каких-то малопонятных телодвижений)
а я тебе про это рассказывал http://msdn.microsoft.com/ru-r... calar.aspx
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
08.12.2012, 11:35  [ТС]
Вот еще что откопал:
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 все остальное ведь не выполняется?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:38
SuLLeN, я тебе ещё раз говорю: ты делаешь фигню какую-то нелогичную. Зачем тебе контролировать подключение к БД, если ты пишешь в файл?
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
08.12.2012, 11:38  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
а ты вообще какую-то фигню делаешь.
Это просто кусок от кода был
Ты его целиком не видел, поэтому не понял.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:40
SuLLeN, все равно тебе эта проверка не нужна. посмотри ссылку, которую я дал
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
08.12.2012, 11:42  [ТС]
Ок.
Контролировать нужно потому, что это форма подключения.
В ней 2 проверки:
1) Есть ли подключение
2) Нажат ли чекбокс

Если подключения нет то выдаст сообщение о ошибке соединения и на этом все, программа закрывается или ждет пока бд включат (еще не решил).
Если подключение есть, программа проверяет нажат ли чек бокс.
Если нажат то сохраняет данные введенные пользователем и заходит, а если нет то просто заходит.

Так яснее?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 14:19
SuLLeN, не знаю логику твоего приложения, но я бы делал так: если "Нажат чекбокс", то попытка сохранить данные, если не удалось (по любой причине, в том числе отсутствие соединения), то пользователь ждет (не знаю чего)
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
09.12.2012, 17:00  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
если не удалось (по любой причине, в том числе отсутствие соединения)
Почему так? Сведения о подключении сохраняются же в файл а не в базу.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
09.12.2012, 22:46
Цитата Сообщение от SuLLeN Посмотреть сообщение
Почему так? Сведения о подключении сохраняются же в файл а не в базу.
Причин не выполнения запроса множество:
1) нет соединения по причине неверной строки подключения
2) нет соединения по причине отсутствия сети
3) отключен сервер
4) неправильно составлен запрос
5) нарушена целостность данных
... и ещё масса причин. Поэтому контролировать возникновение исключения обязательно нужно.
0
326 / 159 / 45
Регистрация: 06.12.2012
Сообщений: 305
10.12.2012, 11:35
Цитата Сообщение от SuLLeN Посмотреть сообщение
Доброго времени суток!
Как проверить, подключен к базе или нет?
что ты имеешь виду.
подключение выполняется только на определенное время, чтобы выполнить запрос, чем меньше время тем лучше.
это логика ADO.NET
далее если ты пишешь, try,catch не забывай про finally, а то твой try catch до одного места.
C#
1
2
3
4
5
6
7
8
9
10
11
try
{
       connection.Open();
}
catch
{
}
finally
{
       connection.Close();
}
или используй
C#
1
2
3
4
using (SqlConnection connection=new SqlConnection(connection_string))
{
       //connection.Close(); использовать тогда не надо. 
}
Добавлено через 12 часов 33 минуты
Цитата Сообщение от SuLLeN Посмотреть сообщение
Это просто кусок от кода был
Ты его целиком не видел, поэтому не понял.
да уж, ООП тут и не пахнет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2012, 11:35
Помогаю со студенческими работами здесь

Подключение к базе
Всем привет! Долго думал как назвать тему, так и не придумал информативное название... В общем дело такое: реализую соединение с...

Подключение к 1с базе
Может есть примеры с подобным! В сети есть база 1с, но на компьютере самой программы 1с нету. Можно ли подключиться к файлам базы и достать...

Подключение к базе
Добрый день!Как можно подключиться к базе ms access,находящейся на другом компьютере в локальной сети??подключение через...

Подключение к базе
Проблема возникла при подключение Личного кабинета к сервера что стоит у меня на компьютере указал все как нужно: ...

Подключение к базе
Добрый день! Подскажите, пожалуйста,в чем может быть проблема, что не проходит tnsping? Подключаюсь через vpn. Сетевой админ, отвечающий за...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru