我在 Oracle SQL Developer 中有 1 个表,其中包含 1 column as Float
。Data reader
have 应该Decimal for oracle float datatype
按照此处给出的表格返回:https ://docs.microsoft.com/en-us/dotnet/framework/data/adonet/oracle-data-type-mappings
但问题是 datareader 返回double as datatype
如下Float Column
所示:
但问题是 datareader 返回 double 作为数据类型,NREAL as Float
并且NFLOAT1 as float
令人惊讶的是 datareader 返回Decimal for both the column
如下所示:
代码 :
static void Test()
{
using (OracleConnection connection = new OracleConnection("connection string")
{
connection.Open();
using (OracleCommand command = connection.CreateCommand())
{
command.CommandText = "select id , NFLOAT from Numeric_Table";
using (OracleDataReader reader = command.ExecuteReader())
{
for (int i = 0; i < reader.FieldCount; i++)
{
var columnName = reader.GetName(i);
var dotNetType = reader.GetFieldType(i);
var sqlType = reader.GetDataTypeName(i);
}
}
}
}
}
我正在使用:Oracle.ManagedDataAccess.Client
这是内部的错误Oracle.ManagedDataAccess.Client library
还是我做错了什么?
更新:根据评论我想提一点:
虽然我可能参考了不适用于我正在使用的 oracle 库的不同源文档,但我仍然为我的其他 2 列(即 NREAL 和 NFLOAT1)获取十进制数据类型,那么为什么这种行为不一致?