Try
ADOConnect1.connected:=True;
Except
ShowMessage('由于数据库服务器不存在或者是账号密码错引起的连接失败!');
end;
就这样啊,但是你必须是在运行可执行文件时才行,也就是说直接点开编译好的.EXE文件,不要在DELPHI环境下测试。
行的话要加分哦。
ADOConnect1.connected:=True;
Except
ShowMessage('由于数据库服务器不存在或者是账号密码错引起的连接失败!');
end;
就这样啊,但是你必须是在运行可执行文件时才行,也就是说直接点开编译好的.EXE文件,不要在DELPHI环境下测试。
行的话要加分哦。
...
Except
if TADOconnection.Errors.Count>0 then
Case TADOconnection.Errors[0].NativeError of
xx:...
End;
End;
TADOconnection.Errors[0].NativeError中返回的是数据库原始错误编号,根据此编号查数据库帮助就可以得知具体的错误信息。比如Oracle的1005,1017号就是用户名或密码错,12154是服务器不存在。TADOconnection.Errors[0].Description
TADOconnection.Errors[0].Number
我用SQL SERVER的,把TADOconnection.Errors[0].NativeError取出来总是6。
用捕捉错误类型的方法的话,先要找出错误类,是EoleException,问题是不论服务器不存在还是密码错,其错误类型都是EoleException,可用查看抛出的错误类的classname属性。
程序把密码错和服务器不存都当作了OLE automation错,看来这种办法区分起来很难了,我再考虑其他的办法吧。