Oracle BLOB 数据类型到 RichTextBox

Oracle BLOB datatype to RichTextBox

我得到了一个包含许多列的 Oracle table。 BLOB 数据类型中的这些列中的 1 个。 我在 VB.NET 中得到一个简单的查询,它从 table 中检索所有数据并填充我的表单。但是,我在使用 BLOB 列时遇到了一些问题。

我有这段代码:

 cmd.CommandText = "select * from local_it.local_email_template where name = '" & cb_EmailName.Text & "'"

    dr = cmd.ExecuteReader
    dr.Read()
    tb_Username.Text = dr.Item(1)
    tb_Password.Text = dr.Item(2)
    tb_FromName.Text = dr.Item(3)
    tb_FromEmail.Text = dr.Item(4)
    tb_Host.Text = dr.Item(5)
    n_Port.Value = dr.Item(6)
    cb_Action.Text = dr.Item(7)
    tb_Subject.Text = dr.Item(8)
    rtb_Body.Text = dr.Item(9)
    dr.Close()

但是我在行 rtb_Body.text = dr.item(9) 上收到错误消息

Conversion from type 'Byte()' to type 'String' is not valid

所以我试着说 rtb_Body.text = dr.item(9).tostring,但现在我只得到文本

System.Byte[]

在我的 RichRextBox 中。

所以我的问题是:如何编写这个位(或我的查询)以便在我的 RichRextBox 中获得实际文本?

使用 Visual Studio 2012,VB.NET 在 Oracle g11 数据库上

您可以使用来自 System.Text 命名空间的编码函数:

  • 用于保存在 blob 字段中:

    Dim blob_bytes_to_db As Byte() = System.Text.Encoding.ASCII.GetBytes(RichTextBox1.Rtf)

  • 将 blob 加载到 richtextbox:

    RichTextBox1.Rtf = System.Text.Encoding.ASCII.GetChars(blob_bytes_from_db)

注意:使用 RichTextBox1 .Text 属性 只能 get/set 清除文本。如果你想 get/set 格式化所有 RTF 代码的文本,请使用 .Rtf 属性.