Souci SQL d'update sur VARBINARY(MAX)
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 :D
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.
Code:
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(); |
Et je le balance en SQL :
Code:
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();
} |
Ç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.
Voici le code qui recharge:
Code:
1 2
| TextRange range = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
range.Load(data, DataFormats.XamlPackage); |
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...
N'hésitez pas à demander des précisions.
Merci d'avance.