Как я могу обновить поле blob на сервере

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

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

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

1 ответ

Решение

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

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

Изменить ====

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

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

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

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

Другие вопросы по тегам