TADOConnection检查不正确的凭据

时间:2015-02-07 13:17:16

标签: mysql delphi delphi-7

我使用以下连接字符串:

ADOConnection1.ConnectionString := 'Driver={MySQL ODBC 3.51 Driver};' +
                                   'Server=db4free.net;Port=3306;' +
                                   'Database=inventmanager;' +
                                   'User=' + eUser.text + ';Password=' + ePass.Text +
                                   ';Option=3;';
eUser,ePass是主表单上的TEdits。

执行时:

ADOConnection1.Connected := true;

他们是否可以测试凭据是否不正确,然后显示MessageDlg?

1 个答案:

答案 0 :(得分:1)

凭据无效时MySQL服务器返回错误1044 SQLSTATE: 42000 (ER_DBACCESS_DENIED_ERROR)。不幸的是,当ODBC凭据无效时,MySQL ODBC驱动程序无法检索特定的错误代码,而是返回通用的80004005错误代码。因此,您最好的选择是解析消息字符串并搜索Access denied for user字符串。

try
   ...
   ...   
   ADOConnection1.Connected:=True;
except
   on e:  EOleException do
   begin
     if Pos('Access denied for user', e.Message)>0 then
       ShowMessage('Invalid Credentials')
     else
       ShowMessage(Format('ErrorCode %x Message %s Source %s',[e.ErrorCode, e.Message, e.source]));
   end;
end;