我使用以下连接字符串:
ADOConnection1.ConnectionString := 'Driver={MySQL ODBC 3.51 Driver};' +
'Server=db4free.net;Port=3306;' +
'Database=inventmanager;' +
'User=' + eUser.text + ';Password=' + ePass.Text +
';Option=3;';
执行时:
ADOConnection1.Connected := true;
他们是否可以测试凭据是否不正确,然后显示MessageDlg?
答案 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;