环境:Delphi 7 + Oracle 11g
Oracle中的字段值''就等同于null,这点和Sql Server不同,Sql Server中''(两个单引号的空字符)和null是两个值。
在Delphi 7中使用ADOQuery读取Oracle中的null字段时可用如下方式:
1、如果读取的字段是number数字型
aa := ADOQuery1.FieldByName('traincount').AsInteger;
注:当traincount字段的值为null时,使用AsInteger将返回0。
2、如果读取的字段是varchar2字符型
bb := ADOQuery1.FieldByName('trainid').AsString;
注:当trainid字段的值为null时,使用AsString将返回'',就是Delphi 7的bb变量的值将是''(空字符)。
3、如果使用ADOQuery1.FieldByName('trainid').Value 或者 ADOQuery1.FieldValues['traincount']方式引用字段值,那么在遇到字段值为null时,返回的值也将是null。如果非要使用上述方式引用,可增加null的判断。
if ADOQuery1.FieldByName('trainid').IsNull then
cc := ''
else
cc := ADOQuery1.FieldByName('trainid').Value;