使用MFC   ADO 操作数据库
写了一个sql语句执行,可以系统会自动增加一个',导致最后查询不正确求大神解答
AClookupsqlstr=_T("select * from SA_SaleDelivery_b where idSaleDeliveryDTO in (select ID from SA_SaleDelivery where code='SA-2015-08-0003')");    
 会自动变成
AClookupsqlstr=_T("select * from SA_SaleDelivery_b where idSaleDeliveryDTO in (select ID from SA_SaleDelivery where code=''SA-2015-08-0003'')"); 操作函数为
_RecordsetPtr& CADOConn::GetRecordSet(_bstr_t bstrSQL){ try { //连接数据库,如果connection为空则重新连接   if (m_pConnection == NULL) OnInitADOConn(); //创建记录集对象   m_pRecordset.CreateInstance(__uuidof(Recordset)); //取得表中的记录   m_pRecordset->Open(bstrSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); } catch (_com_error e) { e.Description(); } //返回记录集   return m_pRecordset;}

解决方案 »

  1.   

    加了就com  error了  亲
      

  2.   

    AClookupsqlstr=_T("select * from SA_SaleDelivery_b where idSaleDeliveryDTO in (select ID from SA_SaleDelivery where code='SA-2015-08-0003')"); 我运行这句,没看到'变成'',你是怎么看到的
      

  3.   

    数据库的字符串 本来就是要 ‘’ 的吧?  否则容易被当成是语句
    select * from mytable where id = 'ABS and cc=1234'    
    'ABS and cc=1234' 本来就是一段字符串, 
    但是如果去掉 ‘’   select * from mytable where id = ABS and cc=1234 就变成两个限制条件