TADOConnection 检查不正确的凭据

TADOConnection check for incorrect Credentials

我正在使用以下连接字符串:

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 的方法吗?

当凭据无效时 MySQL 服务器 return 出现错误 1044 SQLSTATE: 42000 (ER_DBACCESS_DENIED_ERROR)。不幸的是,当凭据无效时,MySQL ODBC 驱动程序不会检索特定的错误代码,而是 return 通用的 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;