Сериализовать документ в базе данных и работать с ним

Одной из задач, которые могут потребоваться при работе с документами, является хранение и извлечение объектов Document в базу данных и из нее. Например, это было бы необходимо, если бы вы внедряли систему управления контентом любого типа. Все предыдущие версии документов должны храниться в системе баз данных. Возможность хранить документы в базе данных также чрезвычайно полезна, когда ваше приложение предоставляет веб-сервис.

Aspose.Words предоставляет возможность преобразовать документ в массив байт для последующей работы с этим документом в базе данных.

Преобразование документа в массив байтов

Чтобы сохранить документ в базе данных или подготовить его к передаче через Интернет, часто необходимо сериализовать документ, чтобы получить массив байт.

Чтобы сериализовать объект Document в Aspose.Words:

  1. Сохраните его в MemoryStream, используя перегрузку метода Save класса Document.
  2. Вызовите метод ToArray, который возвращает массив байт, представляющий документ в байтовой форме.

Затем описанные выше шаги можно отменить, чтобы загрузить байты обратно в объект Document.

В приведенном ниже примере показано, как сериализовать объект Document для получения массива байт, а затем как отменить сериализацию массива байт, чтобы снова получить объект Document:

Хранение, чтение и удаление документа в базе данных

В этом разделе показано, как сохранить документ в базе данных, а затем загрузить его обратно в объект Document для работы с ним. Для простоты имя файла является ключом, используемым для хранения и извлечения документов из базы данных. База данных содержит два столбца. Первый столбец “FileName” хранится в виде строки и используется для идентификации документов. Второй столбец “FileContent” хранится в виде объекта BLOB, который хранит объект документа в байтовой форме.

В следующем примере кода показано, как настроить подключение к базе данных и выполнять команды:

В следующем примере кода показано, как сохранить документ в базе данных, затем снова прочитать тот же документ и, наконец, удалить запись, содержащую документ, из базы данных:

Сохранение документа в базе данных

Чтобы сохранить документ в базе данных, преобразуйте его в массив байт, как описано в начале этой статьи. Затем сохраните этот массив байт в поле базы данных.

В следующем примере кода показано, как сохранить документ в указанной базе данных:

Укажите commandString, которое является выражением SQL, выполняющим всю работу:

  • Для сохранения документа в базе данных используется команда “INSERT INTO” и указывается таблица со значениями двух полей записи – FileName и FileContent. Чтобы избежать дополнительных параметров, имя файла берется из самого объекта Document. Значению поля FileContent присваиваются байты из потока памяти, который содержит двоичное представление сохраненного документа.
  • Оставшаяся строка кода выполняет команду, которая сохраняет документ Aspose.Words в базе данных.

Извлечение документа из базы данных

Чтобы извлечь документ из базы данных, выберите запись, содержащую данные документа в виде массива байт. Затем загрузите массив байт из записи в MemoryStream и создайте объект Document, который загрузит документ из MemoryStream.

В следующем примере кода показано, как извлекать и возвращать документ из указанной базы данных, используя имя файла в качестве ключа для извлечения этого документа:

Удаление документа из базы данных

Чтобы удалить документ из базы данных, используйте соответствующую команду SQL без каких-либо манипуляций с объектом Document.

В следующем примере кода показано, как удалить документ из базы данных, используя имя файла для извлечения записи: