Wie speichere ich RichTextBox -Inhalte in SQL VarBinary (Byte Array) Spalte?
-
06-07-2019 - |
Frage
Ich möchte den Inhalt einer Richtextbox im XAMLPackage -Format in VarBinary (= Byte Array) speichern. Ich brauche einen technischen Rat darüber, wie es geht.
Ich muss tatsächlich wissen, wie man zwischen FlowDocument in Byte -Array umwandelt.
Wird es sogar empfohlen, es als variär zu speichern, oder dies ist eine schlechte Idee?
Aktualisieren
Code-Auszug:
///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
Lösung
Ich kann mein vollständiges Beispiel momentan nicht finden, aber Sie können Xamlreader und Xamlwriter verwenden, um das Dokument in eine Zeichenfolge und aus und aus herauszuholen. Von dort aus können Sie UnicodeCoding, Asciienencoding oder egal welchen Encoder verwenden, den Sie in und aus Bytes bringen möchten.
Mein kürzeres Beispiel für das Einstellen des Dokuments aus einer Zeichenfolge ... Docreader ist mein Flow -Dokument -Leser
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;
}
}
}