Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

06.12.2012, 23:28. Просмотров 6348. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 23:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка на подключение к базе (C#):

Удалённое подключение к базе - C#
Доброго времени суток. Есть приложение, работающее с базой данных. Версия SQL SERVER - 2008 R2. Использовать приложение планируется с...

Подключение к базе данных - C#
Здравствуйте! Хочу создать базу данных в Visual Studio 2010 и подключиться к ней из другого приложения. Пробовал создавать базы данных с...

Подключение к базе данных - C#
Привет! Мне надо написать прогу на с#. В ней нужно обращаться к локальной базе данных(которую я мастерю в проекте). Нужно вставлять...

Подключение к базе из .config - C#
Пытаюсь подключится к базе sql server из когфиг файла, но выбрасывает NullReferenceException, подскажите пожалуйста что я делаю не так и...

Подключение к базе данных - C#
По сути, должна выполняться проверка подключения к БД , при прохождении вывод сообщения "Соединено", на самом деле: Формат строки...

Подключение к базе данных - C#
Здравствуйте! Создал в Visual Studio 2010 локальную базу данных с помощью Service-Based Database. Пытаюсь подсоединиться к этой базе данных...

24
nio
5930 / 3334 / 200
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.12.2012, 23:40 #2
SuLLeN, выполни запрос
SQL
1
SELECT 1
0
adm_loro
Заблокирован
07.12.2012, 18:16 #3
C#
1
connection.State == ConnectionState.Open
0
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 796
07.12.2012, 20:40  [ТС] #4
Цитата Сообщение от nio Посмотреть сообщение
выполни запрос
А что он дает?
0
nio
5930 / 3334 / 200
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
07.12.2012, 20:48 #5
Цитата Сообщение от SuLLeN Посмотреть сообщение
А что он дает?
Если выполняется, значит подключение есть
0
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 796
08.12.2012, 09:04  [ТС] #6
Цитата Сообщение от nio Посмотреть сообщение
Если выполняется, значит подключение есть
По сути, так можно любой запрос отправить, а как сделать так, что бы с ошибкой не вылетало, а выдавало в мес.бокс "Нет подключения"?
0
nio
5930 / 3334 / 200
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 10:54 #7
SuLLeN, тебе уже adm_loro показал в посте 3. Но этот способ не самый лучший: если подключение было закрыто по инициативе сервера, или возникли проблемы на транспортном уровне, свойство State этого не отразит.
0
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 796
08.12.2012, 11:04  [ТС] #8
Цитата Сообщение от nio Посмотреть сообщение
Но этот способ не самый лучший: если подключение было закрыто по инициативе сервера, или возникли проблемы на транспортном уровне, свойство State этого не отразит.
Какой способ тогда использовать?
0
nio
5930 / 3334 / 200
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:06 #9
SuLLeN, я ни какой не использую. Операцию обращения к БД ставлю в try-catch и этого достаточно
0
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 796
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 и этого достаточно
Покажи, пожалуйста, как ты это делаешь?
0
nio
5930 / 3334 / 200
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:32 #11
SuLLeN, а ты вообще какую-то фигню делаешь.
перевожу на русский:
если соединение с БД закрыто - выдать сообщение
иначе
если соединение открыто - записать данные в файл (и еще куча каких-то малопонятных телодвижений)
а я тебе про это рассказывал http://msdn.microsoft.com/ru-ru/libr...utescalar.aspx
0
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 796
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 все остальное ведь не выполняется?
0
nio
5930 / 3334 / 200
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:38 #13
SuLLeN, я тебе ещё раз говорю: ты делаешь фигню какую-то нелогичную. Зачем тебе контролировать подключение к БД, если ты пишешь в файл?
0
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 796
08.12.2012, 11:38  [ТС] #14
Цитата Сообщение от nio Посмотреть сообщение
а ты вообще какую-то фигню делаешь.
Это просто кусок от кода был
Ты его целиком не видел, поэтому не понял.
0
nio
5930 / 3334 / 200
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 11:40 #15
SuLLeN, все равно тебе эта проверка не нужна. посмотри ссылку, которую я дал
0
08.12.2012, 11:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2012, 11:40
Привет! Вот еще темы с ответами:

Подключение к базе MSSQL - C#
Добрый день! Помогите разобраться с подключением к базе MSSQL. Есть следующий код: using System; using System.Collections.Generic; ...

Подключение к базе данных - C#
Здравствуйте, заполняю форму элементами вручную. не могу понять как заполнить DataSet данными из адаптера. Подскажите пожалуйста чего не...

.NET 4.x Подключение к удаленной MySQL базе - C#
Здравствуйте, Недавно столкнулся с небольшой проблемой, перепробовал кучу вариантов ее решения, но ни один еще не помог, надеюсь на вашу...

Подключение к базе Odbc сервер - C#
Всем приветь, я новичок по С#. Ну хочу изучит С#! Вот код, который я написал: private void Form1_Load(object sender, EventArgs e) ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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