string sel(string str)
{
_ConnectPtr pMyConn("ADODB.Connection");
_RecordsetPtr pMySet("ADODB.Recordset");
pMyConn->Open("......
_bstr_t strConn="select * from users";
pMySet->Open(strConn,_variant_t((IDispathc *)pMyConn........
.....
}依照上面的写法是可以访问数据库的。但如果我想把查询语句改为这样就不行了,_bstr_t strConn="select * from users where username='"+str+"'"
有条件的查询语句应该怎样写呢?

解决方案 »

  1.   

    我用的是win32 dll,mfc的CString.Format不能用
      

  2.   

    我这样写没问题:
    string strmid="select * from user where username='"+str+"'";
    _bstr_t strConn=strmid.c_str();不过不是很明白!另有一个问题,我的函数用try catch语句没效果。
    string sel(string str)
    {
    try
    {
    //语句
    }
    catch(int)
    {
    return "ERROR";
    }
    }
    当用其他系统调用dll,当try里的语句运行错误的时候函数sel并没有返回"ERROR"信息,而是直接跳出一个错误框"Runtime Error!",说"abnormal program termination"。我怎么设置或者怎么写才能不跳出错误框而是返回错误信息呢?
      

  3.   

    catch(int) --> catch(_com_error &e) 捕获内容错了
      

  4.   

    这个是因为_bstr_t 没有实现+操作符吧 string实现了 + 相当于连接字符串
      

  5.   

    看了一下说明,是因为我catch后面的类型声明只写了int型,我改为catch(...)就可以全部捕捉了!