Comment enregistrer le contenu RichTextBox dans une colonne SQL varbinary (tableau d'octets)?
-
06-07-2019 - |
Question
Je souhaite enregistrer le contenu d'un RichTextBox dans varbinary (= tableau d'octets) au format XamlPackage. J'ai besoin de conseils techniques sur la façon de procéder.
J'ai en fait besoin de savoir convertir un fichier FlowDocument en tableau d'octets.
Est-il même recommandé de le stocker en tant que varbinary, ou c'est une mauvaise idée?
Mettre à jour
Extrait de code:
///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
La solution
Je ne trouve pas mon exemple complet pour le moment, mais vous pouvez utiliser XamlReader et XamlWriter pour obtenir le document dans et hors d’une chaîne. À partir de là, vous pouvez utiliser UnicodeEncoding, AsciiEncoding ou n’importe quel encodeur dans lequel vous souhaitez l’obtenir.
Mon exemple le plus court pour définir le document à partir d'une chaîne ... docReader est mon lecteur de documents de flux
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;
}
}
}