急!!.NET中OleDbDataReader取不出字段值!!
系统使用informix数据库,msv.net开发环境,程序中用OleDbDataReader获得纪录,具体如下:
while(sqDR.Read())
{
cmdText=sqDR.GetValue(0).ToString().Trim();
....
}
执行到循环体中就会异常:System.NullReferenceException: 未将对象引用设置到对象的实例。
实际上使用sql语句在查询器中能够得到纪录,sqDR也不为null,但就是不能执行任何方法,包括isDbNull(0)等。数据库表结构如下:
create table gj_shenqing_info
(sysserialno integer unique,
mscinfo char(2048),
bscinfo char(2048),
btsinfo char(2048),
cellinfo char(2048),
hlrinfo char(2048),
gmscinfo char(2048),
sysmsc char(2048),
sysbsc char(2048),
sysbts char(2048),
syscell char(2048)
);
如果将所有char类型换成varchar便能够正确执行。其他表中也有过char类型的情况,且长度更长,但是能够正确执行。
什么原因呢?
while(sqDR.Read())
{
cmdText=sqDR.GetValue(0).ToString().Trim();
....
}
执行到循环体中就会异常:System.NullReferenceException: 未将对象引用设置到对象的实例。
实际上使用sql语句在查询器中能够得到纪录,sqDR也不为null,但就是不能执行任何方法,包括isDbNull(0)等。数据库表结构如下:
create table gj_shenqing_info
(sysserialno integer unique,
mscinfo char(2048),
bscinfo char(2048),
btsinfo char(2048),
cellinfo char(2048),
hlrinfo char(2048),
gmscinfo char(2048),
sysmsc char(2048),
sysbsc char(2048),
sysbts char(2048),
syscell char(2048)
);
如果将所有char类型换成varchar便能够正确执行。其他表中也有过char类型的情况,且长度更长,但是能够正确执行。
什么原因呢?
...全文
请发表友善的回复…
发表回复