Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2015, 11:53   #1
Skolos
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 36
По умолчанию Теряется связь с базой

Добрый день. Возникла проблемма. Есть база данных Mysql. Моя программа по сети к ней подключается и что то делает. Язык С#. Вот примерная реализация:

Код:
string CommandText;
	string Connect = "Database=test;Data Source=localhost;User Id=root;Password=12345678";
	//string Connect = "Database=test;Data Source=192.168.0.2;User Id=root;Password=12345678";
	MySqlDataReader MyDataReader;
	MySqlConnection myConnection;
	MySqlCommand myCommand;

	// Соединение с базой
	public void Connection()
	{
		myConnection = new MySqlConnection(Connect);
		try
		{
			myConnection.Open();
		}
		catch (Exception ee)
		{
			MessageBox.Show("Подключение не установлено! :(", "Упс!" + ee);
		}
	}
		
	//Кнопка Начать
	private void button19_Click(object sender, EventArgs e)
	{
		Connection();
		while(1)
		{
			CommandText = "SELECT id FROM table";
			myCommand = new MySqlCommand(CommandText, myConnection);
			MyDataReader = myCommand.ExecuteReader();
			while (MyDataReader.Read())
				// ну тут работа с полученными данными. 
			MyDataReader.Close();
			System.Threading.Thread.Sleep(300000);
		}		
	}

Проблемма в следующем. Если подключение идет с компа на котором база, все замечательно работает. А если же по сети с другого компьтера string Connect = "Database=test;Data Source=192.168.0.2;User Id=root;Password=12345678"; - то первый раз цыкл отрабатывает а потом на строке MyDataReader = myCommand.ExecuteReader(); выдает ошибку MySqlException не обработано Fatal error encountered during comand execution. Хотя, если убрать System.Threading.Thread.Sleep(30000 0); то и по сети все работает замечательно. Почему за 5 мин сна теряется соединение и как это исправаить?

Уважаемые форумчане, скажите пожалуйста что я упустил и как мне настроить правильную работу с базой с других компьютеров по сети? Заранее спасибо.
Skolos вне форума Ответить с цитированием
Старый 20.10.2015, 11:59   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну в конфиге сервера БД есть параметры таймаута, и вроде при подключении тоже можно задать.
Но мне кажется лучше просто создать новый MySqlConnection, а не держать его все время.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.10.2015, 12:16   #3
Skolos
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 36
По умолчанию

А как тогда правильно поддерживать соединение? К примеру если скрипт будет долго работать и нужно периодически получать данные с базы. Каждый раз подключаться ведь не правильно.
Skolos вне форума Ответить с цитированием
Старый 20.10.2015, 13:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Fatal error encountered during comand execution.
И все? Больше там никакого текста нет? Кода ошибки? Не? Почему ты решил что именно подключение отваливается?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.10.2015, 14:04   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

С чего вы взяли что неправильно?

Если надо делать запрос раз в 5 минут, то просто создавайте/уничтожайте (с помощью using) новый SqlConnection каждый раз.

Если запросы очень частые (например несколько раз в секунду), то можно пул соединений использовать (или он даже есть по умолчанию в ADO.NET?). Ну это конечно больше имеет смысл например если запросы делаются из разных потоков и один и тот же Connection использовать нельзя.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADOConnection связь с базой betirsolt БД в Delphi 16 26.05.2013 22:00
связь делфи с базой данных access q123ser87 Помощь студентам 1 19.05.2012 15:28
Управление базой данных,связь Word и Excel doublek Помощь студентам 0 07.12.2011 23:40
теряется жосткий диск. podujanin Помощь студентам 18 03.06.2010 22:12
БД в делфи, связь с базой Access -BlindGuardian- Помощь студентам 4 27.01.2010 03:00