我在VC程序中用了这个具有谓词的SQL语句(IN)
sql="select * from T_Resident"
+"where strNameNo='"+m_RoomNo+"' and fidUnit in"
+"(select id from T_Building where strName='"
+str+"')";
编译时出现提示:cannot add two pointers
什么地方错了.

解决方案 »

  1.   

    怎么这样加?_bstr_t sql = _bstr_t("Select * from...") + _bstr_t(" where ...");串用_bstr_t就行了
      

  2.   

    这是VC,不是其他的编译器,字符串怎么能直接加呢?
    char sql[255];
    char data[50];
    strcpy(sql, "select * from T_Resident");
    strcat(sql, "where strNameNo='");
    sprintf(data, "%d", m_RoomNo );//假定m_RoomNo 为整行
    strcat(sql, data);
    strcat(sql, "' and fidUnit in");
    strcat(sql, "(select id from T_Building where strName='");
    strcat(sql, str);//假定str为字符串类型
    strcat(sql, "')");
    cannot add two pointers是不能将两个指针相加的意思,字符串实际是字符指针类型的.
      

  3.   

    sql="select * from T_Resident"
    +"where strNameNo='"+m_RoomNo+"' and fidUnit in"
    +"(select id from T_Building where strName='"
    +str+"')";
    改成sql="select * from T_Resident"
    "where strNameNo='"+m_RoomNo+"' and fidUnit in"
    "(select id from T_Building where strName='"
    +str+"')";就两个小加号的问题,何必这么复杂呢。
      

  4.   

    建议用 format,sprintf
    进行格式化处理
      

  5.   

    sql="select * from T_Resident"\
    "where strNameNo='"+m_RoomNo+"' and fidUnit in"\
    "(select id from T_Building where strName='"\
    +str+"')";
      

  6.   

    这个不是SQL语句有错,还是你在处理这个字串时没有搞对,看来你还要看看指针和数组为要!
      

  7.   

    我觉得你SQL语句中,单引号与双引号的拼配有问题啊,sql="select * from T_Resident"
    +"where strNameNo='"+m_RoomNo+"' and fidUnit in"
    +"(select id from T_Building where strName='"
    +str+"')";
    给你一个例子看能用否?select * from Dic_Subject where Subject_NO='"+m_subjectNO+"' or Subject_Name='"+m_subjectName+"'
      

  8.   

    CString sql ;
    sql+="select * from T_Resident"
    +"where strNameNo='"+m_RoomNo+"' and fidUnit in"
    +"(select id from T_Building where strName='"
    +str+"')";
      

  9.   

    CString sql ;
    sql.Format( "%s%s%d%s%s%s%s",
    "select * from T_Resident",
    "where strNameNo='",
    m_RoomNo,
    "' and fidUnit in",
    "(select id from T_Building where strName='",
    str,
    "')" ) ;