Как мне сохранить содержимое RichTextBox в столбец SQL varbinary (массив байтов)?
-
06-07-2019 - |
Вопрос
Я хочу сохранить содержимое RichTextBox в varbinary (= массив байтов) в формате XamlPackage.Мне нужна техническая консультация о том, как это сделать.
Мне действительно нужно знать, как преобразовать FlowDocument в массив байтов.
Рекомендуется ли вообще хранить его как varbinary, или это плохая идея?
Обновить
Фрагмент кода:
///Load
byte[] document = GetDocumentFromDataBase();
RickTextBox tb = new RickTextBox();
TextRange tr = new TextRange(tb.Document.ContentStart, tb.Document.ContentEnd)
tr.Load(--------------------------) //Load from the byte array.
///Save
int maxAllowed = 1024;
byte[] document;
RichTextBox tb = new RichTextBox();
//User entered text and designs in the rich text
TextRange tr = new TextRange(tb.Document.ContentStart, tb.Document.ContentEnd)
tr.Save(--------------------------) //Save to byte array
if (document.Length > maxAllowed)
{
MessageBox.Show((document.Length - maxAllowed) + " Exceeding limit.");
return;
}
SaveToDataBase();
TextRange
Решение
Я не могу найти свой полный пример прямо сейчас, но вы можете использовать XamlReader и XamlWriter для ввода документа в строку и вывода из нее.Оттуда вы можете использовать UnicodeEncoding, ASCIIEncoding или любой другой кодировщик, который вы хотите, чтобы вводить его в байты и извлекать из них.
Мой более короткий пример настройки документа из строки...docReader - это программа для чтения документов моего потока
private void SetDetails(string detailsString)
{
if (docReader == null)
return;
if (String.IsNullOrEmpty(detailsString))
{
this.docReader.Document = null;
return;
}
using (
StringReader stringReader = new StringReader(detailsString))
{
using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(stringReader))
{
this.docReader.Document = XamlReader.Load(reader) as FlowDocument;
}
}
}