c# OracleDataAdapter.Fill 遇到不支持的 Oracle 数据类型

我的环境是VS2010/.NET4.0/Oracle11gClient,服务器端Oracle10g我是想通过程序向多种数据库自动生成数据,我先是实现了SQLServer的... 我的环境是VS2010 /.NET4.0/ Oracle11g Client , 服务器端Oracle10g

我是想通过程序向多种数据库自动生成数据, 我先是实现了SQLServer的操作,最近添加了对Oracle的功能。
首先我是通过GetSchema得到数据库中表的结构,
然后通过结构中的表名,用SQL 的Select语句取得表的内容,
并将数据库中所有表保存在DataSet中

下面是我的代码
foreach (DataRow row in databaseSchemaTable.Rows)
{
string tableName = row["TABLE_NAME"].ToString();
string sql = string.Format("SELECT * FROM {0}", tableName);
try
{
IDbDataAdapter dbAdp = dbFactory.CreateDataAdapter(sql, dbConn);
dbFactory.Fill(dbAdp, ds, tableName);
}
catch (Exception ex)
{
logger.Error(string.Format("{0}表取得失败。", tableName), ex);
}

}

这里当取Oracle其中的一个表时,总是报” 遇到不支持的 Oracle 数据类型 ”、
我想问如何解决这个错误。和为什么会出错?
并且,我只管向数据库中已有的表中生成数据,并不管数据库中表的结构,那么如何避免这个错误的生成?

多谢高手解答!
dbFactory.Fill(dbAdp, ds, tableName);
是自己封装的代码里面就是返回了 OracleDataAdapter.Fill(collectionName, restrictionValues


在网上看到这样的回答
-------------
主要是字段为空间字段,如用SDO_GEOMETRY存储方式就oracle会有自定义的MDSYS.SDO_GEOMETRY字段类型,使用 OracleCommand不支持这种字段类型。不过咱们使用SQL的目的是得到属性数据,可以过滤掉空间字段等。
--------------
感觉说的有理,那么如何过滤掉空间字段呢
展开
 我来答
台球英雄
2010-09-15
知道答主
回答量:8
采纳率:0%
帮助的人:4万
展开全部
BINARY_DOUBLE、BINARY_FLOAT类型可以导致这个错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式