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;
我正在使用以下连接字符串:
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;