2011-10-18 7 views
1

Предупреждение: общее переписывание.ADODataset: как загрузить XML (сохраненный заранее в базе данных в схеме ADO) данные без временных файлов?

Сценарий:

Я загрузил некоторые данные из базы данных на потомке TCustomADODataset. После этого я сохранил эти данные в XML temp-файле (используя TCustomADODataset.SaveToFile), чтобы позволить получать XML-данные в виде строки и хранить их в таблице базы данных в виде текстового блоба - это таблица экспорта.

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

Проблема:

Проблема с выше подхода является необходимость временных файлов, чтобы позволить TCustomADODataset использовать метод LoadFromFile.

Есть ли другой способ загрузить данные XML, хранящиеся в виде текста в таблице экспорта базы данных, в TCustomADODataset, который не требует временных файлов?

Примечания:

  • TClientDataset не вариант в этом случае.
+0

Теперь кажется, что я был чист. Пожалуйста, поместите этот комментарий в качестве ответа. Посмотрим, когда я вернусь к этой проблеме завтра и испытаю код torry. Спасибо. –

+0

Почему downvotes? –

+0

Трудно сказать, может быть, это потому, что формулировка довольно сложная. В первый раз я подумал, что вы хотите обратный случай. Попробуйте упростить его, например: «Можно ли загружать данные непосредственно из памяти в TClientDataset (без использования LoadFromFile)?» И удалять эти обновления. +1 тем временем :) – TLama

ответ

8

Пробный код this. Вероятно, это именно то, что вы ищете. Используя RecordsetFromXML в этом примере, вы можете просто присвоить набор записей свойству TCustomADODataSet.Recordset.

+0

Кажется, вы показали ТОЛЬКО решение без временных файлов. Хорошо оборвал вас щедрость. –

+1

Спасибо; Кстати, я думаю, что код в этой статье - лучший подход, потому что [TCustomADODataSet.LoadFromFile] (http://docwiki.embarcadero.com/VCL/en/ADODB.TCustomADODataSet.LoadFromFile) использует тот же [Recordset.Open] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms675544%28v=vs.85%29.aspx), а также [TCustomADODataSet.SaveToFile] (http: //docwiki.embarcadero. com/VCL/ru/ADODB.TCustomADODataSet.SaveToFile) использует [Recordset.Save] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms681501%28v=vs.85%29. aspx) с той лишь разницей, что они используют потоки вместо файлов. – TLama