Найден 51 результат

DemetrionQ
Пн 11 фев 2013 10:47
Форум: MySQL Data Access Components
Тема: TMyEncryptor
Ответы: 8
Просмотры: 11019

Re: TMyEncryptor

Здравствуйте.

В следующих версиях MyDAC метод Encrypt будет скрыт.
Однако, мы рассматриваем возможность создания целенаправленных компонентов для шифрования данных.
DemetrionQ
Чт 07 фев 2013 13:55
Форум: MySQL Data Access Components
Тема: TMyEncryptor
Ответы: 8
Просмотры: 11019

Re: TMyEncryptor

Здравствуйте.

Метод TMyEncryptor.Encrypt применяется для внутренних нужд компонентов. Вызывать его на прямую нет необходимости. TMyEncryptor следует использовать в связке с TMyQuery или TMyTable.

Суть работы компонента TMyEncryptor заключается в следующем. Когда вы изменяете данные через TMyQuery или TMyTable с помощью Insert/Edit/Post , то подключённый компонент TMyEncryptor будет шифровать заданные поля только для текущей редактируемой записи. Аналогично, этот компонент будет расшифровывать данные в этих полях при открытии датасета. Перечень полей для шифрования можно задавать в свойстве TMyQuery.Encryption.Fields. Однако заметьте, не все типы данных можно шифровать. Более подробную информацию о применении TMyEncryptor вы можете найти в статье "Data Encryption" в справке по MyDAC.
DemetrionQ
Пн 04 фев 2013 17:02
Форум: dbExpress драйверы
Тема: Разница между dbexpress и *dac (unidac, mydac и тд)
Ответы: 2
Просмотры: 18375

Re: Разница между dbexpress и *dac (unidac, mydac и тд)

dbExpress — это технология доступа к базам данных от компании Embarcadero, которая заменяет устаревший BDE. dbExpress предоставляет общий интерфейс для работы с различными БД. Мы разрабатываем dbExpress драйвера для этой технологии, но как бы не были хороши драйвера, всё равно рано или поздно вы столкнетесь ограниченностью функционала самого интерфейса dbExpress, на которую драйвера практически не могут повлиять.

В итоге, при использовании любых dbExpress драйверов (в том числе и наших), вы все равно будет ограничены интерфейсом dbExpress (одним из таких ограничений, например, является отсутствие поддержки автоинкрементных полей). В то время как использование DAC компонентов (UniDAC, MyDAC и т.д.) предоставляет более широкий спектр возможностей, например:

- возможность полного управления видом/конструкцией/функциональностью диалога подключения к БД;

- возможность задавать SQL запросы которые будут выполняться при редактировании данных в Query компонентах через методы insert/append/edit/post/delete;

- ряд уникальных компонентов упрощающих работу с БД (например, Script компонент позволяет выполнить несколько SQL запросов (создание таблиц, процедур и т.п.) одной командой, Loader - позволяет очень быстро загрузить в таблицу БД множество записей, MetaData - позволяет получать метаданные об объектах БД (таблицы, поля, процедуры и т.п.) и др.)

Так же имейте в виду, что при работе с dbExpress вы часто будете зависеть от 2-х разработчиков: разработчик самой dbExpress технологии (Embarcadero) и разработчик драйвера (например, Devart). Мы полностью отвечаем за разработку DAC компонентов (UniDAC, MyDAC и т.д.), поэтому способны гарантировать высокое быстродействие продукта и оперативное исправление любых багов. В случае с dbExpress, мы можем гарантировать лишь качество и быстродействие самого драйвера, а также быстрое исправление багов только в самом драйвере. Если баги появятся в самой технологии dbExpress, то вам придется ждать выхода нового Update к той версии Delphi, в которой этот баг будет обнаружен.

При выборе между Devart драйверами для dbExpress и DAC компонентами мы бы порекомендовали использовать именно DAC компоненты.
DemetrionQ
Пт 01 фев 2013 18:18
Форум: MySQL Data Access Components
Тема: Сколько строк в выборке select?
Ответы: 2
Просмотры: 7589

Re: Сколько строк в выборке select?

Здравствуйте.

Количество строк в выборке select можно узнать 2мя способами.

1)

Код: Выделить всё

Form1.MyQuery1.SQL.Text:= 'select * from rd where name_id=:dname';
Form1.MyQuery1.ParamByName('dname').AsString := Pr1NameForDB[0,i1];
Form1.MyQuery1.Open;
i:=Form1.MyQuery1.RecordCount; // свойство RecordCount хранит число загруженных строк
2)

Код: Выделить всё

Form1.MyQuery1.SQL.Text:= 'select count(*) from rd where name_id=:dname';
Form1.MyQuery1.ParamByName('dname').AsString := Pr1NameForDB[0,i1];
Form1.MyQuery1.Open;
//SQL запрос возвратит число строк из таблицы rd отвечающих условию name_id=:dname
i:=Form1.MyQuery1.FieldByName('count(*)').AsInteger; //сохраним число строк

//теперь загрузим сами строки таблицы для дальнейшей работы с ними
Form1.MyQuery1.SQL.Text:= 'select * from rd where name_id=:dname';
Form1.MyQuery1.ParamByName('dname').AsString := Pr1NameForDB[0,i1];
Form1.MyQuery1.Open;
Учтите, что при работе со свойством RecordCount есть одна особенность. RecordCount хранит число строк, которое реально загрузил (закешировал) TMyQuery компонент из базы.

У компонента TMyQuery (а так же и у TMyTable) есть свойство FetchAll , по умолчанию оно установлено в True и это значит что будут загружаться сразу все записи из таблицы. В этом случае RecordCount соответствует реальному количеству записей в таблице БД.

Если FetchAll установлен в False то при открытии TMyQuery загрузятся не все записи. Число записей, которое будет загружено сразу после открытия ограничится числом указанным в свойстве FetchRows. При дальнейшей работе с TMyQuery (используя методы Next , Last) записи будут подгружаться по мере необходимости и число RecordCount будет увеличиваться. А метод Last вынудит TMyQuery подгрузить все записи из таблицы БД, если они ещё не были загружены.
DemetrionQ
Вт 29 янв 2013 12:42
Форум: Universal Data Access Components
Тема: кракозябры в тексте сообщения об ошибке
Ответы: 3
Просмотры: 4143

Re: кракозябры в тексте сообщения об ошибке

Здравствуйте.

Для корректной работы с UniDac 4.6.11 в Rad Studio XE3 необходимо установить для неё Update1. Скачать его вы можете здесь
http://cc.embarcadero.com/item/29202
Перед установкой рекомендуется удалить UniDac.
Если после установки апдейта ошибка повторится, сообщите нам информацию о версии своей ОС и её локализации.
DemetrionQ
Вт 29 янв 2013 10:45
Форум: MySQL Data Access Components
Тема: Удаление записи из таблицы
Ответы: 2
Просмотры: 5168

Re: Удаление записи из таблицы

Здравствуйте.

Для решения проблемы установите опцию Options.StrictUpdate в значение False:
MyTable1.Options.StrictUpdate := False;
Это предотвратит возникновение ошибки при попытках удалить запись, которой уже нет в БД. При этом, из загруженного DataSet запись удалится.

Также вы можете использовать метод RefreshQuick с параметром True:
MyTable1.RefreshQuick(True);
Этот метод обновит ваш DataSet с учётом только изменённых данных на сервере. Для корректной работы метода таблица должна иметь уникальное поле и TimeStamp поле.

Для более подробной информации о StrictUpdate и RefreshQuick читайте документацию, поставляемую с продуктом.