如何用DbDataReader读取Actian PSQL中DOUBLE类型的原始字节数组?
解决Actian PSQL中DOUBLE类型转字节数组的问题
通过
GetDouble取值后转字节数组
这是最直接可靠的方案,因为DOUBLE本质是固定8字节的IEEE 754浮点数,先读取数值再转换即可:double value = reader.GetDouble(columnIndex); byte[] doubleBytes = BitConverter.GetBytes(value);注意:
BitConverter的字节序依赖当前系统(Windows默认小端),如果需要匹配Actian PSQL的原始存储字节序,可根据情况反转数组:if (BitConverter.IsLittleEndian) { Array.Reverse(doubleBytes); }尝试
GetFieldValue<byte[]>(视驱动兼容性而定)
部分ADO.NET驱动支持直接将数值类型读取为字节数组,可尝试调用:byte[] doubleBytes = reader.GetFieldValue<byte[]>(columnIndex);若驱动抛出转换异常,回到第一种方法即可。
不要使用
GetBytes:该方法仅针对BLOB/VARBINARY这类二进制对象类型,DOUBLE属于数值类型,驱动会直接抛出类型转换异常,无需尝试。
内容的提问来源于stack exchange,提问作者Nicholas Kellner
相关产品推荐
相关产品推荐

