.net读取oracle 数据库long类型数据为空

采用的是 OracleDataAdapter ,
sqlDA.Fill(dataSet,"mapTable"); 方式存入的值 存入的dataset LONG类型值为空,其他值一切正常。
不采用OracleDataAdapter 读取值则能正常,求高手解答。
上面是调用存储过程方法
下面是读取数据展示:

下面是存储过程展示:

第1个回答  2014-09-18

你尝试去读取Datatable中的content列看看他是不是每个cell真的为null值,可以像下面那样读取看看

this.TextBox1.Text = dataSet.Tables[0].Rows[0]["CONTENT"].ToString(); 

string content = dataSet.Tables[0].Rows[0]["CONTENT"].ToString();

追问

获取出来的依旧没数据

追答

null 和 空值是不一样的,null 是不知道什么数据(不可访问),空值是没有是没有数据(可访问)。如果不为null,那就是你读取转换数据方法有问题

第2个回答  2014-09-11
值为空,应该是读取的时候出错,不知道你的SQL语句是带参数查询,还是直接写
死的语句,若是参数查询要把参数类型设置对。LongVarChar或LongRaw两种要
设置对。
dbParam.Add("SSN",OracleType.LongVarChar,SSN);追问

我调用的是存储过程,直接返回一个虚拟表,表里面所有数据都是正常的,
在采用 OracleDataAdapter Fill 方法存入dataset 的时候出的问题 LONG类型的那一列值就变为空了 其他值在Dataset里面都正常

追答

你尝试下不用存储过程,写一个简单的查询用Fill方法试一下,得到的是否也是一样的。

追问

不用存储过程 读取出来直接序列化成List 没有任何问题

追答

查询的结果集,直接用填充到DataSet里有没有问题?

追问

没问题

本回答被网友采纳
第3个回答  2014-09-13
oracle中没有LONG类型。datatable的结构是会由dataadapter生成的。如果值为空说明你的代码有问题追问

代码有问题 那应该所有数据都有问题才对呢 关键是只有这个类型的数据为空

第4个回答  2014-09-11
估计是数据类型不对应,你查询时使用to_char()试试将long查询出来用string类型接收看看能不能行追问

to_char() 转换不了LONG类型的

追答

大数据建议使用blob类型

第5个回答  2014-09-17
支持最长,转换一下数据格式追问

在哪儿转换,怎么转换

相似回答