bool类型本身,其实是一个整型值,你读出的这些数据都是有可能的,因为归根到底,取出的数据取决于数据库中存放的数据。方法没错,case DBVT_BOOL时,直接用varValue.m_boolVal。

解决方案 »

  1.   

    从你打出结果看,数据库中该field的值就是4329985
      

  2.   

    老兄, 那我该怎么办? 总不能用4329985来判断其值为TRUE或FALSE吧. 我想总有个法子将其转为(1/0)或(TRUE/FALSE)才对.
      

  3.   

    1 严格意义上说,C++中没有专门的布尔变量, BOOL及bool实际上是一个int
    2 既然如此,在C++中是这样定义的:0为flase, 非0为true  所以下面这样的代码是正确的
     int a =10;
     if(a)
     {
        //do you job
     }
    3 解决你这问题的方法如下:
     cout << varValue.m_boolVal ? 1:0 << endl;
      

  4.   

    楼上的大虾,实际上, 当数据库的字段为TRUE时,取出的varValue.m_boolVar值为:4329985,
    为FALSE时, 取出的值为:4329984, 并不是0.用你说的方法: cout << varValue.m_boolVal ? 1:0 << endl;
    编译时通不过.我改用:
    int tmpVarValue;
    tmpVarValue = varValue.m_boolVal ? 1 : 0;
    cout << tmpVarValue << endl; 
    打印的结果全都是1.
      

  5.   

    从理论上说,不可能出现你说的那种情况如果真是这样的话,那可能是ODBC的错误,也有可能是Access这个字段填入的数据根本就不正确不过我发现,它的低八位是正确的.你可以这样解决
    (char)varValue.m_boolVal ? 1 : 0
      

  6.   

    谢谢! 问题算是解决了.
    我往Access字段填的是(1/0),不知道为什么读出来的就不是(1/0).