Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Odbc MySQL


Автор: MAK 14.6.2006, 23:26
Столкнулся с такой ситуацией:
есть класс, реализующий работу с бд. необходимо сделать две выборки подрят, т.е. сначала запускаем процедуру выборки одних данных, затем других.

К сожалению, столкнулся с ситуацией, что эти запросы выполняются одновременно, соответственно результат не корректрый.  smile 
Как ставить запросы "в очередь" либо просто запретить выполнение запроса, если другой запущен?  smile  

Автор: arilou 15.6.2006, 10:17
MAK, во-первых, есть managed provider для MySql, называется MySql Connector .NET (на сайте MySql).
А во-вторых, smile не совсем понятно, как это "одновременно". Код в студию  smile  

Автор: MAK 15.6.2006, 11:41
Вроде разобрался... Надо было использовать транзакцию и настроить запрет использования параллельных запросов...  smile 
А код таков (абстрактно):
Код

...
private void cbo_SelectedIndexChanged(...)
{
    ...
    GetValuesFromTable1();
    GetValuesFromTable2();
    ...
}
...

private void GetValuesFromTable1()
{
    sql.Select("id, title", "table1");
    
    while (sql.Read())
    {
        arr = sql.FetchArray();
    }
    
    sql.Free();
}

private void GetValuesFromTable2()
{
    sql.Select("id, cid, date", "table2");
    
    while (sql.Read())
    {
        arr = sql.FetchArray();
    }
    
    sql.Free();
}
....


Так вот, "одновременно" - это когда на 17 строке извлекаются данные, поторые отновятся ко 2му запросу (т.е. получается, что как-будто вместо 13 строки стоит 25)  smile  

Автор: arilou 15.6.2006, 14:50
Цитата(MAK @  15.6.2006,  11:41 Найти цитируемый пост)
sql

В любом случае, вместо ODBC будет намного лучше и быстрее использовать MySql Connector .NET  

Автор: MAK 15.6.2006, 18:09
Если не считать, что с кодировкой проблемы...  smile 
Да и как-то не заменил я особого быстродействия  smile  

Автор: arilou 16.6.2006, 13:28
Цитата(MAK @  15.6.2006,  18:09 Найти цитируемый пост)
Да и как-то не заменил я особого быстродействия  

Каюсь, это было голословное устверждение. Наверное, офицальный провайдер внутри все равно работает через ODBC. Можно попробовать других провайдеров (правда, не знаю, есть ли другие бесплатные), которые используют нативный интерфейс.

http://www.google.com/search?hl=en&lr=&q=MySQL%20.NET%20Provider 

Автор: MAK 16.6.2006, 16:30
Да, использование "натива" было бы здорово  smile 
(для с++ использую - очень доволен  smile ) 

Автор: ZAK 3.6.2010, 09:21
Э-э-э... Прошу прощения... Объясните, пожалуйста, откуда возьмётся параллельность?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)