gpt4 book ai didi

c# - 读取 Oracle BLOB 字段

转载 作者:太空狗 更新时间:2023-10-30 01:14:46 34 4
gpt4 key购买 nike

我尝试读取 Oracle BLOB 字段并在 richTextBox 中显示内容。我在谷歌上找到的例子几乎是一样的,但我仍然无法让它工作。我知道 BLOB 字段包含序列化数据。这是我到目前为止所拥有的:(连接和阅​​读器工作正常)

private void button1_Click_1(object sender, EventArgs e)
{
//testen of een blob is uit te lezen


OracleCommand cmd = new OracleCommand();
cmd.Connection = OraConnection.conn;

cmd.CommandText = "select id, blobfield from test_table where id = '20ED7EDB-406A-43E8-945B-5E63DFCBA7FF'";
cmd.CommandType = CommandType.Text;

OracleDataReader dr = cmd.ExecuteReader();

dr.Read();
OracleBlob BLOB1 = dr.GetOracleBlob(1);

Byte[] Buffer = (Byte[])(dr.GetOracleBlob(1)).Value;

string lookupValue = System.Text.ASCIIEncoding.ASCII.GetString(Buffer);

richTextBox1.Text += lookupValue; //shows: DQStream
richTextBox1.Text += "";
richTextBox1.Text += "1";
richTextBox1.Text += dr.GetOracleBlob(1).Value; //shows: System.Byte[]
richTextBox1.Text += "";
}

最佳答案

OracleBlob 是一个 Stream -- 它继承了 Stream

OracleBlob b = dr.GetOracleBlob(1); 
var sr = new System.IO.StreamReader(b);
var content = sr.ReadToEnd();

你应该能够通过这种方式获取数据。

大数据 block 通常以流的形式传送。

Oracle 文档:OracleBlob https://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleBlobClass.htm

编辑如果你想把它转换为 byte[],那么试试这个:

Byte[] buffer = (Byte[])(dr.GetOracleBlob(1)).Value; 
var content = new String(Encoding.UTF8.GetChars(buffer));

关于c# - 读取 Oracle BLOB 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923977/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com