Всем привет. возникла проблемма при реализации паттерна SingleTone
Метод CommandSql должен выполнять SQL запросы и подключаться к MySQL только 1 раз, для запросов, невозвращающих данные (INSERT UPDATE DELETE & etc) все работает нормально, но при SELECTe вылетает на dbAdapt.Fill(dbLtSet);
private int (string query, string command)
{
dbLtSet.Tables.Clear();
try
{
if(!_connected)
{
DBconnect();
}
dbCommand.CommandText=query;
dbCommand.ExecuteReader();
//DBdisconnect(); //Если тут производить отключение от сервера - все работает.if (command == "select")
{
dbAdapt.SelectCommand = dbCommand;
dbAdapt.Fill(dbLtSet);//Вылетает на этой строке и говорит что-то вроде "необходимо отключение от сервера"
}
return 1;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"Ошибка!");
return -1;
}
finally
{
dbCon.Close();
}
}
Как обойти такую засаду ??
(MySQl 5.0, MyODBCDriver 3.51, ODBC подключение к БД)
Просто Не хотелось возиться с CSConnector от MySQL. как никак чужой код.
ZK>Как обойти такую засаду ?? ZK>(MySQl 5.0, MyODBCDriver 3.51, ODBC подключение к БД) ZK>Просто Не хотелось возиться с CSConnector от MySQL. как никак чужой код.
Это ты получаешь предупреждение о том, что соединение нельзя использовать повторно — нельзя читать одновременно набор и работать с ним. Можешь использовать SqlResultSet здесь http://www.rsdn.ru/article/db/yukondotnet.xml
ЗЫ: А нельзя сначала залить данные а потом экзекьютить ридер?
Здравствуйте, ZaKi, Вы писали:
ZK>Всем привет. возникла проблемма при реализации паттерна SingleTone ZK>Метод CommandSql должен выполнять SQL запросы и подключаться к MySQL только 1 раз, для запросов,
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, ZaKi, Вы писали:
ZK>>Всем привет. возникла проблемма при реализации паттерна SingleTone ZK>>Метод CommandSql должен выполнять SQL запросы и подключаться к MySQL только 1 раз, для запросов,
L>В связи с чем было принято такое решение?
Всвязи с малобыджетностью проекта, и невозможностью заказчика купить МС СКУЛ Сервер
ZK>>Как обойти такую засаду ?? ZK>>(MySQl 5.0, MyODBCDriver 3.51, ODBC подключение к БД) ZK>>Просто Не хотелось возиться с CSConnector от MySQL. как никак чужой код.
N>Это ты получаешь предупреждение о том, что соединение нельзя использовать повторно — нельзя читать одновременно набор и работать с ним. Можешь использовать SqlResultSet здесь http://www.rsdn.ru/article/db/yukondotnet.xml
ссылка не открылась ((( N>ЗЫ: А нельзя сначала залить данные а потом экзекьютить ридер?
нет. ... кажется ... не совсем понял как это сделать можно.
Здравствуйте, ZaKi, Вы писали:
L>>В связи с чем было принято такое решение?
ZK>Всвязи с малобыджетностью проекта, и невозможностью заказчика купить МС СКУЛ Сервер
Я имел в виду зачем вам понадобилось подключаться только 1 раз.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, ZaKi, Вы писали:
L>>>В связи с чем было принято такое решение?
ZK>>Всвязи с малобыджетностью проекта, и невозможностью заказчика купить МС СКУЛ Сервер
L>Я имел в виду зачем вам понадобилось подключаться только 1 раз.
Поскольку я пишу удаленный сервер, работающий с БД , и коннектов будет ОЧЕНЬ много то это ты часть — котрая сыкономит ресурсы.
поскольку при проведении нагрузочных тестов сервер падает от нагрузки ... DotTrace показал что на Connect disconnect тратится достаточно много времени, притом и сам MySQL подвисает при каждом коннекте больше, чем при одном висящем коннекте. У него каждый раз генерится какие-то там потоки, которые выгружаются с задержкой при дисконнекте.
Короче Singletone — то что надо! )))
Здравствуйте, ZaKi, Вы писали:
ZK>Поскольку я пишу удаленный сервер, работающий с БД , и коннектов будет ОЧЕНЬ много то это ты часть — котрая сыкономит ресурсы. ZK>поскольку при проведении нагрузочных тестов сервер падает от нагрузки ... DotTrace показал что на Connect disconnect тратится достаточно много времени, притом и сам MySQL подвисает при каждом коннекте больше, чем при одном висящем коннекте. У него каждый раз генерится какие-то там потоки, которые выгружаются с задержкой при дисконнекте. ZK>Короче Singletone — то что надо! )))
Здравствуйте, ZaKi, Вы писали:
ZK>Поскольку я пишу удаленный сервер, работающий с БД , и коннектов будет ОЧЕНЬ много то это ты часть — котрая сыкономит ресурсы. ZK>поскольку при проведении нагрузочных тестов сервер падает от нагрузки ... DotTrace показал что на Connect disconnect тратится достаточно много времени, притом и сам MySQL подвисает при каждом коннекте больше, чем при одном висящем коннекте. У него каждый раз генерится какие-то там потоки, которые выгружаются с задержкой при дисконнекте. ZK>Короче Singletone — то что надо! )))
Проверь, не поддерживает ли твой провайдер connection pooling.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: SQL & SingleTone
От:
Аноним
Дата:
22.09.06 13:37
Оценка:
По моему достаточно просто изменить код следующим образом:
ZK>
вопрос, а зачем?
— сначала ExecuteReader() выполнит запрос на сервере и вернет reader который Вы игнорировали
— затем dbAdapt.Fill(dbLtSet); еще раз выполнит запрос, причем сделает это тоже вызвав
ExecuteReader()!!! и загрузив данные из ридера в датасет.
все бы ничего, (два одинаковых запроса подряд — не в счет)
но далеко не все провайдеры данных .NET имеют работать с двумя одновременно
открытыми ридерами.
Классы из набора System.Data.ODBC точно не могут!
О чем собственно и говорит возникающая у Вас ошибка...
Re[2]: SQL & SingleTone
От:
Аноним
Дата:
21.09.06 11:36
Оценка:
>>Можешь использовать SqlResultSet
С ДОБРЫМ УТРОМ! Нет никакого SqlResultSet-а в природе. От него отказались хз когда. Это одно из невыполненных обещаний.
How can men die better than facing fearful odds,
For the ashes of their fathers and the temples of their gods?
Здравствуйте, BlackTigerAP, Вы писали:
BTA>Автору: твой код — одно большое недоразумение. Кури матчасть.
BTA>данное сообщение получено с www.gotdotnet.ru BTA>ссылка на оригинальное сообщение
Здесь гдето написано что я МегаОтец в программировании?? Это форум, и тут задают вопросы, что бы разобраться в интересующих вопросах ... мы все писали что нибудь и когда нибудь ... Здесь задают вопросы, если возникают трудности, а трудности возникают восновном у новичков. ИМХО МатЧасть тут вообще не при чем!
C++Builder6, C#.NET
Re[3]: SQL & SingleTone
От:
Аноним
Дата:
23.09.06 05:42
Оценка:
>>Здесь гдето написано что я МегаОтец в программировании??
А как насчет перед тем, как что-то делать, прочитать хотя бы одну книжку по предмету? Там всё, как правило, хорошо расписано. Учиться по форумам — очень глупая идея, тут научат... такоому...
How can men die better than facing fearful odds,
For the ashes of their fathers and the temples of their gods?