如何使用文本而不是RTF在数据库字段中存储彩色文本

本文关键字:文本 字段 数据库 存储 彩色 RTF 何使用 | 更新日期: 2023-09-27 17:54:09

我在Windows窗体应用程序中有一个richtextbox控件,并且在连接到它的数据库表中有一个VarChar字段。我只需要给这个richtextbox中的一些单词上色。当我将richtextbox控件的Text属性保存到数据库时,它只保存没有颜色的文本,所以我必须保存richtextbox控件的Rtf属性。不幸的是,这会导致一个问题,因为当我从SQL Server Management Studio或任何其他方式查询我的表时,它会向我显示RTF特殊字符,如以下示例:

{'rtf1'fbidis'ansi'ansicpg1256'deff0'deflang3073{'fonttbl{'f0'fnil'fcharset178 Microsoft Sans Serif;}{'f1'fnil'fcharset0 Microsoft Sans Serif;}}

当然,由于RTF字符,这使我无法正确搜索或排序数据。

问题:

1-它是最好保存在RTF格式的重要数据在数据库中,如果它是安全可靠的,我怎么能操纵数据库中的文本,而不导入到一个richtextbox?

2-我需要从RTF的唯一选项是带背景颜色的彩色文本。我只需要用4种颜色(红色,绿色,黄色和蓝色)给我的文本上色,并为一些文本设置黑色背景色。是否有一种方法可以与richtextbox控件的Text属性一起工作,并保存颜色属性?例如,在每个需要上色的单词前写一个颜色代码,比如"/R/代表红色文本/R/","/G/代表绿色文本/G/"?

我认为这是正确的还是我被困在RTF?

如何使用文本而不是RTF在数据库字段中存储彩色文本

像color这样的东西是一个表示角色,所以它不应该在ddbb中用于常规文本。在这种情况下,它更像是带有格式的文档,RTF似乎很合适。

如果需要对该文本进行查询,可以将该文本作为纯文本存储在另一列中,而不需要格式化。

取决于您的设计,Oscar的解决方案很好,您可以保留原始颜色格式并查询纯文本。但看起来它会增加存储空间。您需要使用两列来存储相同的数据,只是格式不同。

而你自己的解决方案,在文本中放置一个颜色代码是好的,但你需要在显示之前(从颜色代码格式更改为RTF)和保存之前(从RTF更改为颜色代码格式)做更多的处理。

您还需要考虑如果将来需要更多格式化该怎么办?例如:颜色较多,甚至需要存储粗体、斜体等样式。如果发生这种情况,如果使用Oscar的方法,则不需要更改代码,但如果使用颜色代码方法,则需要更改代码。