Соединение с MySQL через OLEDB.

Confused
Дата: 20.05.2011 12:32:51
Использую соединение с MySQL через MySQL Provider от Cherry City Software. Тестовый пример: отображение на TDbGrid набора данных TADOQuery.

DesignTime и ручная установка Active в True => правильное отображение результата запроса.
RunTime и единственная строка в обработчике нажатия на кнопку ADOQuery1.Active := True; => вылет в CPU (ntdll.DbgBreakPoint).

Аналогичный эффект наблюдается в Delphi 7 и Delphi 2010. Аналогичного эффекта нет в Visual С# (Microsoft Visual Studio 2008).

В чём может быть дело?
Anatoly Podgoretsky
Дата: 20.05.2011 12:49:30
Дело в ошибке в программе. Дизайн тайм отличается от рантайм
Кроик Семён
Дата: 20.05.2011 13:04:08
(к вопросу не относится, так просто мнение)

для себя давно уже решил не использовать в проектах компоненты с палитры ADO кроме как для доступа к MS ACCESS.
Слишком уж много подводных камней и скрытых настроек.
Confused
Дата: 20.05.2011 13:28:34
Anatoly Podgoretsky
Дело в ошибке в программе.


Можно пояснить? Тестовый пример. На форме TADOConnection, TADOQuery, TDataSource, TDBGrid, TButton. Единственный код:


procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.Active := True;
end;


Более точное место вылета ADODB.TADOConnection.WillExecute. F7 после end; => вылет в CPU.

Кроик Семён
для себя давно уже решил не использовать в проектах компоненты с палитры ADO кроме как для доступа к MS ACCESS.
Слишком уж много подводных камней и скрытых настроек


А что посоветуете для связки Delphi + MySQL?
Anatoly Podgoretsky
Дата: 20.05.2011 13:31:02
TADOQuery без текста запроса не применим.
TADOConnection без установки параметров соединения так же не работоспособен.
автор
А что посоветуете для связки Delphi + MySQL

Только одно - не использовать MySQL
Confused
Дата: 20.05.2011 13:49:40
Anatoly Podgoretsky
TADOQuery без текста запроса не применим.
TADOConnection без установки параметров соединения так же не работоспособен.


Они заданы. Если бы это было не так, то и в DesignTime бы ничего не работало.

Запрос: select * from TableName
Строка соединения: Provider=OleMySql.MySqlSource.1;Password=****;Persist Security Info=True;User ID=****;Data Source=****;Activation=****;Mode=Read;Trace="""""""""""""";Initial Catalog=****;Command Time Out=600

Вместо * реальные данные.

До этого с MySQL не работал. Выбор драйвера не фиксирован. Если проблема в нём, то можно сменить. Просто странно, что этот же драйвер работает и для C#, и для DesignTime Delphi.
Кроик Семён
Дата: 20.05.2011 13:53:04
Confused
А что посоветуете для связки Delphi + MySQL?


Ну, честно говоря, с MySQL опыта нет,

но имею ввиду на будущее:
  • MyDAC, но там для туннелирования (если нужно) надо еще закупать SecureBridge
  • у нас на фирме крутится покупная совтина, которая использует dbExpress с MYSQL драйвером
  • есть еще MicroOLAP MySQL DAC

    и т.д.
  • Anatoly Podgoretsky
    Дата: 20.05.2011 13:53:05
    DesignTime <> рантайм, там многое прощается.

    Posted via ActualForum NNTP Server 1.4

    devart
    Дата: 23.05.2011 11:27:50
    Кроик Семён
  • MyDAC, но там для туннелирования (если нужно) надо еще закупать SecureBridge
  • есть еще MicroOLAP MySQL DAC

  • MyDAC поддерживает HTTP туннелирование. Более подробно об этом описано в документации MyDAC в статье "Network Tunneling". SecureBridge для обеспечения HTTP туннелирования не нужен. Для SSH туннелирования необязательно покупать SecureBridge, вместо SecureBridge можно использовать бесплатный OpenSSH.
  • Преимущества MyDAC в том что он имеет более высокую производительность и набор функциональности чем MicroOLAP MySQL DAC.
  • Confused
    Дата: 23.05.2011 11:42:39
    Всем спасибо за советы. Обязательно попробую предложенные варианты. С действующим драйвером проблема решилась установкой опции "Ignore non-user breakpoints".