程序如下:
//修改口令对话框
void CModPswdDlg::OnOK() 
{
// TODO: Add extra validation here
UpdateData(TRUE);  //将对话框的数据付给变量
    _variant_t strQuery;
strQuery="select * from useraccount\
          where username='"+m_strUser+"'and password='"+m_strOldps+"'";
    theApp.ADOExecute(theApp.m_pADOSet,strQuery);  //打开记录机集
if(theApp.m_pADOSet->GetRecordCount()==1)
{
  if(m_strNewps=m_strConfirmps)    //如果用户名,原密码输入正确且新口令与确认口令相同则修改成功
      {
        strQuery="Update useraccount set username="+m_strUser+",password="+m_strNewps+"";
if(theApp.ADOExecute(theApp.m_pADOSet,strQuery))
{
AfxMessageBox(_T("修改口令成功!"),MB_ICONINFORMATION);
    CDialog::OnOK();
}
else 
{
AfxMessageBox(_T("修改口令失败!"),MB_ICONINFORMATION);
m_strNewps=m_strConfirmps="";
            UpdateData(FALSE);
}
  }
  else //否则,提醒新密码确认错误
  {
  AfxMessageBox(_T("新密码确认错误!"),MB_ICONINFORMATION);
          m_strNewps=m_strConfirmps="";
  UpdateData(FALSE);
  }
}
else //如果不相同,看是用户名错误还是原密码错误

       strQuery="select * from useraccount where username='"+m_strUser+"'";
   theApp.ADOExecute(theApp.m_pADOSet,strQuery);
   if(theApp.m_pADOSet->GetRecordCount()==0)
   {
   AfxMessageBox(_T("用户名输入不正确!"),MB_ICONINFORMATION);
           m_strUser=m_strOldps=m_strNewps=m_strConfirmps="";
   UpdateData(FALSE);
   }
   else 
   {
   AfxMessageBox(_T("原口令不正确!"),MB_ICONINFORMATION);
   m_strOldps=m_strNewps=m_strConfirmps="";
   UpdateData(FALSE);
   }
}
if(theApp.m_pADOSet->GetState()==adStateOpen)theApp.m_pADOSet->Close();

}
调试时,用户名密码输入a,a(数据库已有)当所有都正确时出现
ADO Error:[Microsoft][ODBC SQL Server Driver][SQL Server]列名'a'无效。

解决方案 »

  1.   

    跟踪调试  将生成的sql语句在查询分析器中执行就知道你的sql语句错在何处了
      

  2.   

    在查询前加一句TRACE(strQuery);然后看看sql语句是否正确
      

  3.   

    你跟踪调试一下,看看哪句sql错了
      

  4.   

    可能看起来太烦了,申明一下关键是下面的更新语句有问题,希望高手帮忙一下,急用
    strQuery="Update useraccount set username="+m_strUser+",password="+m_strNewps+"";
    if(theApp.ADOExecute(theApp.m_pADOSet,strQuery))
    {
    AfxMessageBox(_T("修改口令成功!"),MB_ICONINFORMATION);
        CDialog::OnOK();
    }
    (theApp.ADOExecute(theApp.m_pADOSet,strQuery);  //打开记录机集)
    调试时,用户名密码输入a,a(数据库已有)当所有都正确时出现
    ADO Error:[Microsoft][ODBC SQL Server Driver][SQL Server]列名'a'无效。
      

  5.   

    不管怎样,生成后的语句m_strUser和m_strNewps前后要有引号,你自己看看吧