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


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

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

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

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

Чтобы сериализовать объект [Document](https://reference.aspose.com/words/java/com.aspose.words/document/) в Aspose.Words:

1. Сохраните его в **MemoryStream**, используя перегрузку метода [Save](https://reference.aspose.com/words/java/com.aspose.words/document/#save-java.io.OutputStream-int) класса **Document**.
1. Вызовите метод **ToArray**, который возвращает массив байт, представляющий документ в байтовой форме.

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

{{% alert color="primary" %}}

Выбранный формат сохранения важен для обеспечения максимальной точности при сохранении и повторной загрузке в объект **Document**. По этой причине рекомендуется использовать несколько форматов файлов OOXML.

{{% /alert %}}

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

{{< gist "aspose-words-gists" "827e71ccc0b8516a3cfe247b86ce6d4e" "Examples-src-main-java-com-aspose-words-examples-loading_saving-ConvertDocumentToByte-ConvertDocumentToByte.java" >}}

{{% alert color="primary" %}}

Вы можете скачать файл шаблона для этого примера с сайта [Aspose.Words GitHub](https://github.com/aspose-words/Aspose.Words-for-Java/blob/master/Examples/Data/Document.doc).

{{% /alert %}}

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

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

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

{{< gist "aspose-words-gists" "827e71ccc0b8516a3cfe247b86ce6d4e" "Examples-src-main-java-com-aspose-words-examples-loading_saving-LoadAndSaveFromDatabase-OpenDatabaseConnection.java" >}}

{{% alert color="primary" %}}

В этом примере мы используем базу данных MySQL для хранения документа Aspose.Words.

{{% /alert %}}

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

{{< gist "aspose-words-gists" "827e71ccc0b8516a3cfe247b86ce6d4e" "Examples-src-main-java-com-aspose-words-examples-loading_saving-LoadAndSaveFromDatabase-OpenRetrieveAndDelete.java" >}}

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

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

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

{{< gist "aspose-words-gists" "827e71ccc0b8516a3cfe247b86ce6d4e" "Examples-src-main-java-com-aspose-words-examples-loading_saving-LoadAndSaveFromDatabase-StoreToDatabase.java" >}}

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

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

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

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

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

{{< gist "aspose-words-gists" "827e71ccc0b8516a3cfe247b86ce6d4e" "Examples-src-main-java-com-aspose-words-examples-loading_saving-LoadAndSaveFromDatabase-ReadFromDatabase.java" >}}

{{% alert color="primary" %}}

Команда SQL "SELECT * FROM" используется для извлечения соответствующей записи на основе имени файла.

{{% /alert %}}

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

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

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

{{< gist "aspose-words-gists" "827e71ccc0b8516a3cfe247b86ce6d4e" "Examples-src-main-java-com-aspose-words-examples-loading_saving-LoadAndSaveFromDatabase-DeleteFromDatabase.java" >}}
