Как я могу обновить поле blob на сервере - PullRequest
1 голос
/ 11 июня 2011

У меня есть клиент-серверное приложение, созданное с использованием DataAbstract и RemObjects, где клиент передает двоичную переменную для сервера, чтобы поместить в БД.Функция сервера выглядит следующим образом:

function SetItemContent(const anItemId: UnicodeString; const anItemContent: Binary): Boolean;

Но я не знаю, как получить доступ к таблице с сервера, чтобы сохранить эту двоичную переменную в BLOB-объекте.Я также не могу найти никаких ссылок в документации DA.

1 Ответ

2 голосов
/ 11 июня 2011

Вы можете использовать TDALocalDataAdapter в модуле реализации сервиса и подключить TDAMemDataTable.Затем вы можете использовать Dynamic Where (или параметризованную DataTable), чтобы найти и обновить вашу запись, используя обычные методы TDataset.(т. е. вставить, редактировать, опубликовать)

Любое обновление должно быть окружено транзакцией.Используйте Connection.BeginTransaction, RollbackTransaction и CommitTransaction.

Редактировать ====

Вы также можете использовать IDASQLCommand: использовать метод Connection.NewCommand.Вы можете либо указать этот SQL-код непосредственно в качестве параметра, либо (лучше IMHO ++) предоставить имя параметризованной SQL-команды обновления / вставки, которую вы создали в схеме.

Полагаю, вам все еще нужно знать,вставить / обновить, чтобы вы могли использовать IDADataset из метода Connection.NewDataset, чтобы установить это с помощью MyDataset.IsEmpty.Сначала создайте набор данных в схеме или передайте SQL.

Для этого метода все еще сохраняется пункт об использовании транзакций.

++ лучше, потому что это позволяет лучше поддерживать несколько серверных частей БД путемиспользование нескольких операторов для каждого объекта данных или команды.

...