c# – 使用格式化将富文本数据的数据存储到数据库

前端之家收集整理的这篇文章主要介绍了c# – 使用格式化将富文本数据的数据存储到数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在wpf中是新的,我想将富文本框的数据及其格式(斜体,彩色,粗体)存储到数据库(MysqL)中.
当我保存数据时,格式化被忽略.
此外,当我从数据库加载到富文本框时,它会显示同一行中的所有文本.
期待您的帮助和建议!
  1. public void save()
  2. {
  3.  
  4. MysqLConnection conn = new MysqLConnection(connString);
  5. MysqLCommand command = conn.CreateCommand();
  6. string richText = new TextRange(rt1.Document.ContentStart,rt1.Document.ContentEnd).Text;
  7.  
  8. string s = WebUtility.HtmlEncode(richText);
  9. command.Parameters.AddWithValue("@s",s);
  10. command.CommandText = "insert into proc_tra (procedures) values (@s)";
  11. conn.Open();
  12. command.ExecuteNonQuery();
  13. conn.Close();
  14. }
  15.  
  16. public void load()
  17.  
  18. { MysqLConnection conn = new MysqLConnection(connString);
  19. MysqLCommand command = conn.CreateCommand();
  20. command.CommandText = "select * from proc_tra where id_pt=4";
  21. rt1.Document.Blocks.Clear();
  22. conn.Open();
  23. MysqLDataReader dr;
  24. dr = command.ExecuteReader();
  25. string k="";
  26. while (dr.Read())
  27. {
  28. k += dr["procedures"].ToString();
  29. }
  30. var p = new Paragraph();
  31. var run = new Run();
  32. run.Text = WebUtility.HtmlDecode(k);
  33. p.Inlines.Add(run);
  34. rt1.Document.Blocks.Add(p);
  35. }

解决方法

获取将保存在数据库中的格式化文本:
  1. string rtfText; //string to save to db
  2. TextRange tr = new TextRange(richTextBox.Document.ContentStart,richTextBox.Document.ContentEnd);
  3. using (MemoryStream ms = new MemoryStream())
  4. {
  5. tr.Save(ms,DataFormats.Rtf);
  6. rtfText = Encoding.ASCII.GetString(ms.ToArray());
  7. }

要还原从数据库检索的格式化文本:

  1. string rtfText= ... //string from db
  2. byte[] byteArray = Encoding.ASCII.GetBytes(rtfText);
  3. using (MemoryStream ms = new MemoryStream(byteArray))
  4. {
  5. TextRange tr = new TextRange(richTextBox.Document.ContentStart,richTextBox.Document.ContentEnd);
  6. tr.Load(ms,DataFormats.Rtf);
  7. }

您也可以使用XAML格式,使用DataFormats.XAML加载保存.

猜你在找的C#相关文章