2009-10-27 22 views
0

Je souhaite enregistrer le contenu d'un RichTextBox dans varbinary (= byte array) au format XamlPackage. J'ai besoin de conseils techniques sur la façon de le faire.Comment enregistrer le contenu RichTextBox dans une colonne varbinary SQL (tableau d'octets)?

J'ai réellement besoin de savoir comment convertir FlowDocument en tableau d'octets.

Est-il même recommandé de le stocker comme varbinary, ou c'est une mauvaise idée?


Mise à 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 

Répondre

0

Je ne peux pas trouver mon exemple complet en ce moment, mais vous pouvez utiliser XamlReader et XamlWriter pour obtenir le document dans et hors de un string. De là, vous pouvez utiliser UnicodeEncoding, AsciiEncoding ou n'importe quel encodeur que vous voulez pour entrer et sortir des octets.

Mon exemple plus court pour le réglage du document à partir d'une chaîne ... docReader est mon lecteur de document 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; 
      } 
     } 
    } 
+0

est-il même recommandé de le stocker sous forme varbinary, ou bien cela est une mauvaise idée? – Shimmy

+1

Je ne pense pas que ce soit une très mauvaise idée, mais je garderai certainement à l'esprit que ceux-ci peuvent être gros, donc à moins d'utiliser varbinary (max) sur une base de données qui supporte cela, vous devriez plutôt considérer un type de données blob . –

+0

Je ne parle pas de stockage, je pose des questions sur les performances, c'est-à-dire le déballage de la matrice d'octets. à propos des blobs: 1) je n'utiliserai pas de grands docs, 2) Dans ce projet j'utilise 2005. – Shimmy