strSql.Format("SELECT * FROM health_admin_log WHERE user_name='%s'",ui.strname );
if(theApp.pAdoDb->Execute((LPCTSTR) strSql))
{
if (theApp.pRs->Open((LPCTSTR)strSql,CADORecordset::openUnknown)) 
{
if(theApp.pRs->GetRecordCount() > 0)
{
return TRUE;
}
return FALSE;
}
return FALSE;
}
    return FALSE;运行后,输入用户名zxy 和密码,出现对话框内容是:
         CADODatabase error;
          code meaning =IDispathch error #3092
         语法错误where user_id=‘zxy'
怎么回事啊?

解决方案 »

  1.   

    strSql.Format("SELECT * FROM health_admin_log WHERE user_name='%s'",ui.strname ); 
    你能确认这个语句是这样写的吗?因为从错误提示上看感觉你写的是
    strSql.Format("SELECT * FROM health_admin_log WHERE user_id=‘%s'",ui.strname ); 
    而且user_id=‘%s'还有一个全角的单引号。
      

  2.   

    strSql.Format("SELECT * FROM health_admin_log WHERE user_name='%s'",ui.strname ); 是这个啊,但是就是不知道错在哪了
    连着出三个对话框,对话程序终止
      

  3.   

    strSql.Format("SELECT * FROM health_admin_log WHERE user_name='%s'",ui.strname ); 是这个啊,但是就是不知道错在哪了
    连着出三个对话框,对话程序终止
      

  4.   

    把格式化后的语句输出来,然后在sql manager里执行
      

  5.   

    在连接数据库的语句上加上TRY...CATCH看有无报错
    bool ConnectDB( LPCTSTR ConnStr, LPCTSTR Name, LPCTSTR Psw )
    {
    _ConnectionPtr m_pConnectionl
            m_pConnection.CreateInstance(__uuidof(Connection));

    try                 
    {    
    m_pConnection->Open((_bstr_t)ConnStr, (_bstr_t)Name, (_bstr_t)Psw, adModeUnknown);
    } catch(_com_error &e)
    {
    Cstring m_ErrorStr = e.ErrorMessage();
    return false;
    } return true;
    }
      

  6.   

    strSql.Format("SELECT * FROM health_admin_log WHERE user_name='%s'",ui.strname ); 
    TRACE(strSql); //或者挂起,看看strSql到底是什么内容
      

  7.   


    在数据库里面建一个简单的测试表,然后用程序select 这个表中的数据,如果一致,则表示连接的数据库是这个了.