2015-02-07 7 views
0

잘못된 자격 증명을위한 검사 :TADOConnection의 나는 다음과 같은 연결 문자열을 사용하고

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를 보여주는 경우 테스트하는 방법은 있습니까?

+0

델파이 관련 질문에 항상 generic [tag : delphi] 태그를 추가하여 올바른 구문 형광펜과 질문에주의를 기울여야합니다. –

답변

1

자격 증명이 유효하지 않은 경우 MySQL 서버는 1044 SQLSTATE: 42000 (ER_DBACCESS_DENIED_ERROR) 오류를 반환합니다. 유감스럽게도 자격 증명이 유효하지 않은 경우 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; 
+0

comobj 유닛을 사용에 추가해야했지만 완벽하게 작동해야했습니다. – AlphaMc111

관련 문제