我用vc++写了一个读ORACLE数据库的程序,
事先定义
_RecordsetPtr p_Record;CString sql;
sql = "select * from DEBUGGER.T_INFO";
p_Record->Open((_bstr_t)sql,p_Con.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);在列表中显示语句如下
m_list.SetItemText(i,0,(LPCTSTR)(_bstr_t)p_Record->GetCollect("SerialNumber"));当数据库中该列有数据时显示正常,可是如果该列没有数据,程序就会报错。
因为数据库很大,里面经常会有列会有空数据,请问查询语句要怎么改?谢谢!

解决方案 »

  1.   

    取出的列可能有空值的话,vc++在进行处理时,是需要判断的.你可以到数据库里看看哪些定义为null的字段,在vc++ list显示之前进行判断.
      

  2.   

    你要在select 语句里把空值处理掉,例如把空值转换为0
    select case when serialNumber is null then 0 else serialNumber end...
    from 表
      

  3.   


    有点看不懂,你是说要改这句吗?
    sql = "select * from DEBUGGER.T_INFO"; 要改成什么样呢?
    我刚学,有点看不懂,麻烦你写清楚一点,谢谢!
      

  4.   

    首先,不用*,用字段名代替。
    然后 select 字段1,字段2,nvl(字段3,'空值') from table
      

  5.   

    那就全使用 nvl(字段,'转换值')(主键,别的非空字段不用使用这个) ,也就是给你个字段设置一个为空时的默认值