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

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

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

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

06.12.2012, 23:28. Просмотров 5859. Ответов 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. Пытаюсь подсоединиться к этой базе данных...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 794
08.12.2012, 11:42  [ТС] #16
Ок.
Контролировать нужно потому, что это форма подключения.
В ней 2 проверки:
1) Есть ли подключение
2) Нажат ли чекбокс

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

Так яснее?
0
nio
5919 / 3322 / 200
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.12.2012, 14:19 #17
SuLLeN, не знаю логику твоего приложения, но я бы делал так: если "Нажат чекбокс", то попытка сохранить данные, если не удалось (по любой причине, в том числе отсутствие соединения), то пользователь ждет (не знаю чего)
0
SuLLeN
23 / 23 / 4
Регистрация: 27.12.2011
Сообщений: 794
09.12.2012, 17:00  [ТС] #18
Цитата Сообщение от nio Посмотреть сообщение
если не удалось (по любой причине, в том числе отсутствие соединения)
Почему так? Сведения о подключении сохраняются же в файл а не в базу.
0
nio
5919 / 3322 / 200
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
09.12.2012, 22:46 #19
Цитата Сообщение от SuLLeN Посмотреть сообщение
Почему так? Сведения о подключении сохраняются же в файл а не в базу.
Причин не выполнения запроса множество:
1) нет соединения по причине неверной строки подключения
2) нет соединения по причине отсутствия сети
3) отключен сервер
4) неправильно составлен запрос
5) нарушена целостность данных
... и ещё масса причин. Поэтому контролировать возникновение исключения обязательно нужно.
0
skynick99
116 / 116 / 10
Регистрация: 06.12.2012
Сообщений: 254
10.12.2012, 11:35 #20
Цитата Сообщение от 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
fufel
5 / 5 / 1
Регистрация: 28.02.2011
Сообщений: 200
21.12.2016, 18:35 #21
Добрый день,
У меня точно такой же вопрос "Как проверить, подключен к базе или нет?".
Я пишу серверную часть которая обращается к MySQL.
Днём на одно соединение обрабатывает до 10 сообщений/сек.
Ночью из за не активности с стороны сервера MySQL на своей стороне закрывает соединение так что сервер об этом узнаёт только тогда когда пытается послать запрос.

Подскажите кто как решает данную задачу.

Одно из решений это сделать простой запрос к MySQL и выполнять его каждый 30 секунд (MySQL пинга).
0
OwenGlendower
Модератор
Эксперт .NET
6754 / 5726 / 2101
Регистрация: 17.03.2014
Сообщений: 10,949
Записей в блоге: 1
21.12.2016, 19:18 #22
fufel, сделай проще - открывай каждый раз новое соединение, делай запрос и закрывай. При интенсивных запросах соединения будут браться из пула, при редких будет открываться новое. При таком подходе вопрос "открыто ли соединение?" отпадет.
0
XIST
761 / 587 / 80
Регистрация: 01.10.2009
Сообщений: 1,880
Записей в блоге: 1
22.12.2016, 18:55 #23
Цитата Сообщение от SuLLeN Посмотреть сообщение
Как проверить, подключен к базе или нет?
обертка try и перехватываете ex.message.
Либо MyConnection.state проверять

Добавлено через 11 минут
Цитата Сообщение от fufel Посмотреть сообщение
Ночью из за не активности с стороны сервера MySQL на своей стороне закрывает соединение
а чего это он закрывает?
обратите внимание на
wait_timeout
но увеличение его так же не очень полезная штука
0
Agapov_stas
3264 / 1666 / 66
Регистрация: 05.08.2010
Сообщений: 4,268
Завершенные тесты: 1
23.12.2016, 11:18 #24
Я бы на Вашем месте еще о транзакциях почитал.
0
fufel
5 / 5 / 1
Регистрация: 28.02.2011
Сообщений: 200
09.01.2017, 12:05 #25
Добрый день.
Вот вернулся с отпуска и решил поделится решением который я реализовал перед отпуском (Решение работает уже с месяц и не каких нареканий).

Я просто каждый 10 минут отсылаю "Select 1".

ка вы щитаете это нормальное решение или нет?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 12:05
Привет! Вот еще темы с ответами:

Подключение к базе 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) ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.01.2017, 12:05
Ответ Создать тему
Опции темы

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