【问题标题】:Oraclebinary: Read data in C# .NETOraclebinary:在 C# .NET 中读取数据
【发布时间】:2011-08-13 23:40:43
【问题描述】:

我正在尝试使用 C# .NET 中的 System.Data.OracleClient 命名空间从 Oracle 读取一些二进制数据。

如何将数据从 OracleBinary 类值转换为整数?

            OracleConnection conn = new OracleConnection("Data Source=database;User Id=me;Password=me;");
            OracleCommand cmd = new OracleCommand("Select * From SomeData.TableName WHERE vid = 4527", conn);
            conn.Open();

            OracleDataReader reader = cmd.ExecuteReader();
            try
            {
                while (reader.Read())
                {
                    OracleBinary obj = reader.GetOracleBinary(5);
                    // here....
                }
            }
            finally 
            {
                reader.Close();
            }

            cmd.Dispose();

            conn.Close();
            conn.Dispose();

在此数据库的文档中,列定义读取数据类型为 LONG RAW 和“以二进制大对象 (BLOB) 格式存储的值。”

我期待来自 BLOB 的一些整数(负数和正数)。

不确定是否有人可以提供帮助,因为我无法再询问管理员(继续)。如果有人能指出我的方向,我将不胜感激。

编辑:只是为了扩展(我错过了一些信息)该 blob 包含的内容:

位置对数值向量,其中第一个元素是第一个测量深度值,第二个元素是第一个真实垂直深度值,第三个元素是第一个 x 偏移量,第四个是第一个 y偏移量,第五个是第二个测量深度

非常感谢 抢

【问题讨论】:

  • BLOB 是否只包含一个整数?
  • 从外观上看是一个字节数组

标签: c# oracle binary blob oracleclient


【解决方案1】:

如何将数据从 OracleBinary 类值转换为整数?

这里是:

OracleBinary obj = reader.GetOracleBinary(5);
byte[] bytes = obj.Value;
int value = BitConverter.ToInt32(bytes);

但是你确定那是你真正想要的吗?整数值通常不存储在 BLOB 中……BLOB 旨在包含任意二进制数据,例如图像。

【讨论】:

  • 刚刚添加了一些信息,如果它有帮助的话,这就是我所得到的!
  • @rob,您添加的信息很重要,但这还不够……您需要知道 blob 中值的实际类型才能读取它们。它们是整数还是浮点数?它们的尺寸是多少?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
相关资源
最近更新 更多