Bonjour à tous,
Je ne crois pas avoir trouvé de cas similaires au mien ici alors que je cherche à faire quelque chose de plutôt standard.... Du coup ça vient probablement de moi
Voilà mon souci: Je cherche à implémenter une colonne varbinary(max) dans mon appli pour sauvegarder le contenu de WPF RichTextBox directement dans la base SQL.
Je convertis donc le RichTextBox.Document en byte[] au format Xaml.
Et je le balance en SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 TextRange range = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); MemoryStream s = new System.IO.MemoryStream(); range.Save(s, DataFormats.XamlPackage); s.Seek(0, SeekOrigin.Begin); byte[] raw = s.ToArray();
Ça fonctionne parfaitement avec cette requête INSERT, mais quand je veux faire un UPDATE de la même façon, la modif semble bien effective (le champs change bien dans la base), mais quand je le recharge dans un Richtextbox, il est blanc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 using (SqlConnection conn = new SqlConnection(ConnectionString)) { SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Tickets (id, idclient, appelant, descriptif_rich) VALUES(NEWID(), @idclient, @appelant, @descriptif_rich)", conn); cmd.Parameters.Add("@idclient", SqlDbType.Int); cmd.Parameters.Add("@appelant", SqlDbType.NVarChar); cmd.Parameters.Add("@descriptif_rich", SqlDbType.VarBinary, descriptif_rich.Length).Value = descriptif_rich; cmd.Parameters["@idclient"].Value = idcliwavesoft; cmd.Parameters["@appelant"].Value = appelant; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); }
Voici le code qui recharge:
Je n'ai pas de gros doutes sur le code qui charge/décharge dans le RichTextBox car il fonctionne pour les champs qui n'ont pas subit d'update...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TextRange range = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); range.Load(data, DataFormats.XamlPackage);
N'hésitez pas à demander des précisions.
Merci d'avance.
Partager