UniDAC использует следующие имена библиотек OpenSSL: libeay32.dll и ssleay32.dll. Вы можете деплоить данные библиотеки со своим приложением, чтобы не зависеть от наличия данных библиотек на компьютере. Но использование библиотек OpenSSL для создания соединений SSL с MySQL сервером может привести к возникновению различных проблем. Например, версия OpenSSL может не поддерживаться сервером MySQL, битность поставляемых OpenSSL библиотек может отличаться от битности вашего приложения и т.д.
Для решения проблем вы можете использовать компоненты SecureBridge. SecureBridge позволяет устанавливать безопасные соединения в одном приложении без каких-либо внешних файлов. Вы можете узнать, как использовать SecureBridge с UniDAC в разделе «Secure connections» справки MyDAC.
Вы можете увидеть пример работы UniDAC и SecureBridge в демонстрационных проектах: %UniDACDemos%\TechnologySpecific\SecureBridge, где %UniDACDemos% - это путь установки демонстрационных проектов UniDAC на вашем компьютере.
Найдено 212 результатов
- Ср 13 мар 2019 14:53
- Форум: Universal Data Access Components
- Тема: UniDAC + MySQL + SSL
- Ответы: 3
- Просмотры: 8635
- Ср 13 мар 2019 14:24
- Форум: Universal Data Access Components
- Тема: Unidac Uniquery шифрование
- Ответы: 5
- Просмотры: 8912
Re: Unidac Uniquery шифрование
Для хранения зашифрованной информации мы сохраняем, кроме самих данных, дополнительную информацию: the GUID and the hash, когда DataHeader установлено в ehTagAndHash или ehTag. В данном случае, мы пытаемся вычитать GUID, а затем hash, так как вы изменили последний символ, hash измениться и вы получите указанную вами ошибку. В случае записи "Hello world" напрямую, мы пытаемся вычитать GUID и, если это не получиться выводим содержимое поля без попытки дешифрования.h9ko писал(а): ↑Ср 06 мар 2019 21:51 И еще странное поведение использую пример из справки https://www.devart.com/unidac/docs/encryption.htm
при UniEncryptor->DataHeader=ehTag; или UniEncryptor->DataHeader=ehTagAndHash;
при вводе/выводе данных через подключенный UniTable данные шифруются/дешифруются
как пример настройки :
UniEncryptor->DataHeader=ehTagAndHash;
UniEncryptor->EncryptionAlgorithm=ehBlowfish;
UniEncryptor->HashAlgorithm=haSHA1;
UniEncryptor->InvalidHashAction=ihFail;
UniEncryptor->Password= 12345;
UniTable->Encryption->Fields= "ENAME, HIREDATE, SAL, FOTO";
в Unitable ввожу в поле "ENAME" Hello world в бд отображается:Если средствами бд внесу изменение в последнем символе например наКод: Выделить всё
C544E5292C9C42A5B94FE279127029012B0D67570773EDDD92CBDF2B5F4D4AE98356CB8B9D1DFF96BBF0B9924A57C30458C978399BA81A1BB6DE0B08E16C2580A5F660C91B618A341A7E503CD014247C
При обновление UniTable выдастся ошибка "Encrypted data is corrupt - Invalid hash"Код: Выделить всё
C544E5292C9C42A5B94FE279127029012B0D67570773EDDD92CBDF2B5F4D4AE98356CB8B9D1DFF96BBF0B9924A57C30458C978399BA81A1BB6DE0B08E16C2580A5F660C91B618A341A7E503CD014247F
Если средствами бд внесуПри обновление UniTable он не выдаст никаких ошибок и выдаст Hello world.Код: Выделить всё
Hello world
в чем подвох? Пробовал разные варианты UniEncryptor->InvalidHashAction, всегда аналогичное поведение
При использовании UniEncryptor->DataHeader=ehNone; хотя бы искажаются данные, но ошибок никаких
- Ср 13 мар 2019 14:21
- Форум: Universal Data Access Components
- Тема: Unidac Uniquery шифрование
- Ответы: 5
- Просмотры: 8912
Re: Unidac Uniquery шифрование
При использовании запроса SELECT * FROM OPER WHERE DateMoment = '2021-03-05 00:00:00' UniDAC отправляет SELECT запрос как есть, без преобразования, а на сервере данные находятся в зашифрованном виде. Поэтому, вы получаете пустой рекордсет при выполнении указанного запроса. При использовании UniDAC Data Encryption вам следует использовать SELECT запрос без использования WHERE, тогда вы сможете использовать методы Edit .. Post для изменения данных.h9ko писал(а): ↑Ср 06 мар 2019 11:41 Доброе время суток,
Указал в UniEncriptor поле шифрования DateMoment и пароль занес данные через Unitable c привязанным UniEncriptor.
Данные в базе зашифрованы в DBGrid все в расшифрованном виде все хорошо.
При использовании UniQuery1+DBGrid запрос ниже возвращает данные в зашифрованном видеПри использовании UniQuery1+DBGrid запрос ниже не возвращает данныеКод: Выделить всё
UnicodeString sz = "SELECT * FROM OPER "; UniQuery1->SQL->Clear(); UniQuery1->SQL->Add(sz); UniQuery1->DataTypeMap->AddFieldNameRule ("DateMoment", ftString); UniQuery1->Open();
Как делать запрос в Uniqery к зашифрованным столбцам чтобы можно было потом через методы ниже их изменять?Код: Выделить всё
UnicodeString sz = "SELECT * FROM OPER WHERE DateMoment = '2021-03-05 00:00:00'"; UniQuery1->SQL->Clear(); UniQuery1->SQL->Add(sz); UniQuery1->DataTypeMap->AddFieldNameRule ("DateMoment", ftString); UniQuery1->Open();
Код: Выделить всё
if (!UniQuery1->IsEmpty()) { UniQuery1->Edit(); UniQuery1->FieldByName("DateMoment")->AsString = "2020-03-05 00:00:00"; UniQuery1->Post(); }else { UniQuery1->Insert(); UniQuery1->FieldByName("DateMoment")->AsString = "2021-03-05 00:00:00"; UniQuery1->Post(); }
- Вт 12 фев 2019 09:59
- Форум: MySQL Data Access Components
- Тема: AV failure in the Refresh method in RAD Studio 10.2
- Ответы: 4
- Просмотры: 16714
Re: AV failure in the Refresh method in RAD Studio 10.2
Мы исправили указанную ошибку. Данное исправление войдет в следующий релиз MyDAC.
- Чт 24 янв 2019 13:00
- Форум: MySQL Data Access Components
- Тема: AV failure in the Refresh method in RAD Studio 10.2
- Ответы: 4
- Просмотры: 16714
Re: AV failure in the Refresh method in RAD Studio 10.2
Спасибо за информацию. Мы исследуем данное поведение MyDAC и сообщим Вам результат.
- Ср 23 янв 2019 11:32
- Форум: MySQL Data Access Components
- Тема: AV failure in the Refresh method in RAD Studio 10.2
- Ответы: 4
- Просмотры: 16714
Re: AV failure in the Refresh method in RAD Studio 10.2
Чтобы дать вам быстрый и полный ответ на ваш вопрос, пожалуйста, составьте и вышлите нам, с помощью контактной формы https://www.devart.com/company/contactform.html, полный пример, демонстрирующий указанное вами поведение, включающий скрипты для создания и заполнения объектов БД. Также укажите точную версию MySQl которую вы используете.
- Ср 19 дек 2018 12:59
- Форум: MySQL Data Access Components
- Тема: Проблема с восстановлением соединения с сервером после простоя
- Ответы: 1
- Просмотры: 14967
Re: Проблема с восстановлением соединения с сервером после простоя
Обратите внимание, MyDAC автоматически не инициирует проверку соединения с сервером. Поэтому, после успешного соединения с сервером, если связь с сервером разрыватся свойство TMyConnection.Connected будет установленно в True и не возбуждаться событие OnConnectionLost пока не произойдет попытка обращения к серверу.
Для решения вашей задачи, вы можете использовать метод TMyConnection.Ping. Этот метод используется для проверки соединения с сервером MySQL, если соединение было разорвано, то возникнет ошибка и будет выполнена попытка переподключиться к серверу.
Также данный метод можно использовать для того, чтобы сервер не закрыл соединение по таймауту. В данном случае Вы можете использовать TMyConnection.Ping следующим образом - вызывать его из таймера, а интервал таймера установить в значение меньшее чем wait_timeout сервера (чтобы интервалы между получениями сервером команд не превышали wait_timeout).
OnConnectionLost событие происходит только при выполнении следующих условий:
- происходит фатальная ошибка;
- в соединении нет открытых транзакций, которые не являются ReadOnlyReadCommitted (если соединение имеет хотя бы одну открытую транзакцию, которая не является ReadCommitedReadOnly, FailOver не выполняется. Все ReadCommitedReadOnly транзакции восстанавливаются при помощи FailOver операции);
- если нет открытых или недочитанных датасетов;
- нет явно препарированных датасетов или SQL запросов.
Пожалуйста, убедитесь, что ни одно из вышеуказанных условий не нарушено.
Для решения вашей задачи, вы можете использовать метод TMyConnection.Ping. Этот метод используется для проверки соединения с сервером MySQL, если соединение было разорвано, то возникнет ошибка и будет выполнена попытка переподключиться к серверу.
Также данный метод можно использовать для того, чтобы сервер не закрыл соединение по таймауту. В данном случае Вы можете использовать TMyConnection.Ping следующим образом - вызывать его из таймера, а интервал таймера установить в значение меньшее чем wait_timeout сервера (чтобы интервалы между получениями сервером команд не превышали wait_timeout).
OnConnectionLost событие происходит только при выполнении следующих условий:
- происходит фатальная ошибка;
- в соединении нет открытых транзакций, которые не являются ReadOnlyReadCommitted (если соединение имеет хотя бы одну открытую транзакцию, которая не является ReadCommitedReadOnly, FailOver не выполняется. Все ReadCommitedReadOnly транзакции восстанавливаются при помощи FailOver операции);
- если нет открытых или недочитанных датасетов;
- нет явно препарированных датасетов или SQL запросов.
Пожалуйста, убедитесь, что ни одно из вышеуказанных условий не нарушено.
- Ср 28 ноя 2018 14:46
- Форум: Universal Data Access Components
- Тема: Автозагрузка размера текстового поля TField
- Ответы: 1
- Просмотры: 5644
Re: Автозагрузка размера текстового поля TField
На данный момент UniDAC не поддерживает указанную вами функциональность.
Если Вы хотите, чтобы мы добавили данную функциональность, пожалуйста, напишите об этом на нашем User Voice форуме: https://devart.uservoice.com/forums/104 ... components. Если Ваше предложение наберет достаточно голосов, мы рассмотрим возможность его создания.
Если Вы хотите, чтобы мы добавили данную функциональность, пожалуйста, напишите об этом на нашем User Voice форуме: https://devart.uservoice.com/forums/104 ... components. Если Ваше предложение наберет достаточно голосов, мы рассмотрим возможность его создания.
- Ср 28 ноя 2018 14:31
- Форум: Universal Data Access Components
- Тема: Автогенерация InsertSQL, UpdateSQL
- Ответы: 1
- Просмотры: 5581
Re: Автогенерация InsertSQL, UpdateSQL
Мы не видим целесообразности добавления данной функциональности. Но, если Вы хотите, чтобы мы добавили данную функциональность, пожалуйста, напишите об этом на нашем User Voice форуме: https://devart.uservoice.com/forums/104 ... components. Если Ваше предложение наберет достаточно голосов, мы рассмотрим возможность его создания.
Для решения вашей задачи, вы можете объявить наследника TUniQuery и добавить необходимые методы.
Обратите внимание, в коде задействованы внутренние методы и неправильное их использование может привести к непредсказуемым последствиям.
Для решения вашей задачи, вы можете объявить наследника TUniQuery и добавить необходимые методы.
Обратите внимание, в коде задействованы внутренние методы и неправильное их использование может привести к непредсказуемым последствиям.
- Пн 03 сен 2018 09:55
- Форум: MySQL Data Access Components
- Тема: итоги в TCRDBGRid
- Ответы: 1
- Просмотры: 13348
Re: итоги в TCRDBGRid
Для решения вашей задачи вы можете использовать следующий код:
Код: Выделить всё
var
StrValue: string;
Value: variant;
...
StrValue := CRDBGrid.Columns[0].TotalString;
Value := CRDBGrid.Columns[0].TotalValue;
- Вт 21 авг 2018 09:48
- Форум: InterBase Data Access Components
- Тема: Является ли это ошибкой или нет?
- Ответы: 1
- Просмотры: 13559
Re: Является ли это ошибкой или нет?
1. Компоненты TUniQuery является наследником базового класса TDataSet и реализуют его интерфейс. Как указано в документации http://docwiki.embarcadero.com/Librarie ... ataSet.Eof свойство Eof устанавливается в True при вызове метода Last.
2. Свойство AutoCommit по-умолчанию имеет значение True, что приводит к автоматическому выполнению CommitRetaining или RollbackRetaining при любой модификации данных. Установив свойство в False, Вы избавитесь от такого поведения, однако, управлять транзакциями Вам придется самостоятельно.
Так как вы устанавливаете UniConnection.AutoCommit в True при вызове TUniQuery.ExecSQL будет автоматически вызван метод TUniTransaction.CommitRetaining.
Если вам требуется ручное управление транзакций - установите TUniQuery.AutoCommit в False.
2. Свойство AutoCommit по-умолчанию имеет значение True, что приводит к автоматическому выполнению CommitRetaining или RollbackRetaining при любой модификации данных. Установив свойство в False, Вы избавитесь от такого поведения, однако, управлять транзакциями Вам придется самостоятельно.
Так как вы устанавливаете UniConnection.AutoCommit в True при вызове TUniQuery.ExecSQL будет автоматически вызван метод TUniTransaction.CommitRetaining.
Если вам требуется ручное управление транзакций - установите TUniQuery.AutoCommit в False.
- Пн 29 янв 2018 10:58
- Форум: Oracle Data Access Components
- Тема: Ошибка dac140.bpl AddRefStr failed (D:\Projects\Delphi\Dac\Common\Source\MemData.pas)
- Ответы: 1
- Просмотры: 13918
Re: Ошибка dac140.bpl AddRefStr failed (D:\Projects\Delphi\Dac\Common\Source\MemData.pas)
К сожалению, нам не удалось воспроизвести проблему. Чтобы понять причину возникновения проблемы и найти решение для ее исправления, нам необходим тестовый пример, в котором проблема стабильно воспроизводится. Как только мы получим такой пример и, если причина проблемы будет в коде нашего продукта, мы постараемся в кратчайшие сроки ее исправить. Пожалуйста, составьте и вышлите нам, с помощью контактной формы https://www.devart.com/company/contactform.html, полный пример, демонстрирующий указанное вами поведение, включающий скрипты для создания и заполнения объектов БД.
- Пн 29 янв 2018 10:57
- Форум: Oracle Data Access Components
- Тема: Возникновении ошибки Assertion failure (MemData.pas, line 7245))
- Ответы: 4
- Просмотры: 16895
Re: Возникновении ошибки Assertion failure (MemData.pas, line 7245))
Мы просим прощение за неточность. Да, действительно данное исправление не вошло в ODAC 10.1.4, оно войдет в следующий билд ODAC.
Мы можем выслать вам ночной билд ODAC, включающий данное исправление. Для этого, пожалуйста, пришлите нам свой регистрационный номер и используемые IDE на viktorv*devart*com.
Мы можем выслать вам ночной билд ODAC, включающий данное исправление. Для этого, пожалуйста, пришлите нам свой регистрационный номер и используемые IDE на viktorv*devart*com.
- Пн 29 янв 2018 10:38
- Форум: MySQL Data Access Components
- Тема: Транзакции в MyDac
- Ответы: 5
- Просмотры: 19855
Re: Транзакции в MyDac
Спасибо за интерес к нашим продуктам и помощь в их развитии.
Обращайтесь к нам, если у Вас возникнут вопросы по нашим продуктам.
Обращайтесь к нам, если у Вас возникнут вопросы по нашим продуктам.
- Ср 24 янв 2018 13:29
- Форум: MySQL Data Access Components
- Тема: Транзакции в MyDac
- Ответы: 5
- Просмотры: 19855
Re: Транзакции в MyDac
Вызов метода Rollback отменяет изменения данных на сервере, которые произошли после вызова метода StartTransaction. Изменения отправляются на сервер после вызова метода Post, когда вы перемещаетесь по записям в DBGrid, метод Post вызывается автоматически. В вашем случае, когда вы редактируете поле, метод Post еще не вызван и вызов метода Rollback не применится к данным этого поля.
Для решения вашей задачи, вы можете вместо комбинации DBNaviganor.Refresh - кнопка Rollback - DBNaviganor.Refresh вызывать правильную комбинацию: MyQuery.Post - кнопка Rollback - DBNaviganor.Refresh. Также, для отмены изменений редактирования поля, вы можете вызывать метод TMyQuery.Cancel.
Для решения вашей задачи, вы можете вместо комбинации DBNaviganor.Refresh - кнопка Rollback - DBNaviganor.Refresh вызывать правильную комбинацию: MyQuery.Post - кнопка Rollback - DBNaviganor.Refresh. Также, для отмены изменений редактирования поля, вы можете вызывать метод TMyQuery.Cancel.