C# 遇到不支持的Oracle数据类型101
在执行此代码时,我得到一个错误:C# 遇到不支持的Oracle数据类型101,c#,.net,oracle,oracle11g,C#,.net,Oracle,Oracle11g,在执行此代码时,我得到一个错误: OracleDataAdapter oAdp = new OracleDataAdapter("select * from " + TABLE_NAME, SourceConnStr); oAdp.Fill(dtTable); 所以我搜索了大致相同的内容,结果发现.NET目前不支持或识别二进制float/double以及它所指的表中的一列;数据类型为二进制双精度。请建议一种方法来确定表中的一列是否为二进制float/double数据类型,并将其转换为不同的数据
OracleDataAdapter oAdp = new OracleDataAdapter("select * from " + TABLE_NAME, SourceConnStr);
oAdp.Fill(dtTable);
所以我搜索了大致相同的内容,结果发现.NET目前不支持或识别二进制float/double以及它所指的表中的一列;数据类型为二进制双精度。请建议一种方法来确定表中的一列是否为二进制float/double数据类型,并将其转换为不同的数据类型,如number或varchar,这是合适的
Unsupported Oracle data type 101 encountered.
Name Null Type
-------------- -------- -------------
EMPID NOT NULL VARCHAR2(20)
EMPNAME NOT NULL VARCHAR2(50)
EMPTYPE NOT NULL NUMBER(38)
EMPPHOTO BINARY_DOUBLE
DATEOFJOINING DATE
CONTACTNO VARCHAR2(20)
中选择
,将列替换为数据转换,例如使用到字符
:
select * from all_tab_columns where data_type like 'BINARY%' ;
您使用哪个
OracleDataAdapter
?我猜它来自System.Data.OracleClient.OracleDataAdapter
,如果您正在使用Oracle DB,请使用ODAC,Oracle.DataAccess.Client.OracleDataAdapter
,它可以很好地处理Oracle数据类型。show tablestructre@MuhammadMuazzam我刚刚编辑了一个问题,希望帮助您使用哪个DataAccess库?System.Data.OracleClient或Oracle.DataAccess.Client或Oracle.ManagedDataAccess.Client?@Arie System.Data.OracleClientSystem.Data.OracleClient不推荐使用。由于Oracle Database 10g中添加了BINARY_DOUBLE和BINARY_FLOAT,因此可能不支持它。这里的问题是用户选择要操作的表,因此我不能根据假设随机转换单个列。当然,它必须动态识别导致问题的列,并纠正错误。使用相同的表格列出表格名称中的列:“从表格名称=“+表格名称”
new OracleDataAdapter("select column_a, column_b, to_char(column_c_binary_smthg) from "
+ TABLE_NAME, SourceConnStr);