pRstCity=pConn->Execute("select  * from CNCity where ProvinceId="+nIndex,NULL,adCmdText);现在根据前一个下拉列表province确定nIndex的值,然后根据nIndex的值显示对应city记录,但是如上的语句会出现错误,请问该怎么做?

解决方案 »

  1.   

    CString sSqlStr;
    sSqlStr.Format("select * from CNCity where ProvinceId = %d",nIndex);
    pRstCity = pConn->Execute(sSqlStr,NULL,adCmdText);
      

  2.   

    不行啊,前面声明  _RecordsetPtr pRstCity(__uuidof(Recordset));所以按你的方法会报错:cannot convert parameter 1 from 'class CString' to 'class _bstr_t'
      

  3.   

    强制转换一下。
    CString转换为_bstr_t类型很容易的
      

  4.   


    "select  * from CNCity where ProvinceId="+nIndex
    从上面这句话的用法可以看出楼主的 C/C++ 基本功很不扎实,可以说概念模糊。
    一个是字符串,一个是整形变量,怎么可以直接相加?
    从侧面又可以反映出,基础没有打好,很难深入。
    这个问题可以认为是一个字符串的处理问题;通俗的说,是如何把整形变量放入字符串中。这个问题,最早应该在学习 C 语言的时候就应该会,代码如下:char sqlBuf[100];
    sprintf( sqlBuf , "select * from CNCity where ProvinceId = %d" , nIndex );
    快乐鹦鹉 大哥,使用了 MFC 中的 CString 类处理,更加简单。但是,我们有必要知道 CString 类内部是如何处理的。
    三人行,必有我师!鄙人才疏学浅,只会些基本的皮毛知识,希望对楼主有用!
      

  5.   

    CString sSqlStr; 
    sSqlStr.Format("select * from CNCity where ProvinceId = %d",nIndex); 
    pRstCity = pConn->Execute((LPTCSTR)sSqlStr,NULL,adCmdText);