begin
UserName:=FormDataBaseInfo.EditUserName.Text;
Password:=FormDataBaseInfo.EditPassword.Text;
ServerName:=FormDataBaseInfo.EditServerName.Text;
with TDatabase.Create(Application) do
begin
Try
DatabaseName:='TestDatabase';
//随便给DatabaseName命个名字就可以了。
LoginPrompt:=False;
DriverName:='MSSQL';
//这行是关闭TDatabase内置的登录对话框。
Params.Clear;
Params.Add('Server Name='+ServerName);
Params.Add('Database Name=MASTER');
Params.Add('User Name='+UserName);
Params.Add('Password='+Password);
Try
Open;//尝试打开数据库,如果正常打开,则说明SQL服务器工作正常,并且用户名和密码正确。
With TQuery.Create(Application) do
begin
try
DatabaseName:='TestDatabase';
SQL.Add('Select * from Sysdatabases Where Name="TestDB"');
try
Open;
Except
On E:Exception do
begin
Application.MessageBox(PChar('不能打开MASTER数据库的Sysdatabases表,请确认是否有打开该表的权限。'+#13#10#13#10+
'错误信息:'+E.Message),'提示:',MB_ICONERROR);
MainFormCreated:=False;
end;
end;
if MainFormCreated and IsEmpty then//如果返回为空则表示TestDB还没有创建。
begin
//SQL Server所有的用户数据库都在Master数据库的Sysdatabases表中有记录。
Close;
SQL.Clear;
SQL.Add('Create Database TestDB');
try
ExecSQL;
//这里用ExecSQL而不是用Open,是因为DataSet的Open方法只是用于打开SQL语是Select语句的返回结果集
//对于其它SQL语句因为没有返回集所以只能用ExecSQL来执行。
Except
On E:Exception do
begin
Application.MessageBox(PChar('不能创建数据库,请确认是否有创建数据库的权限。'+#13#10#13#10+
'错误信息:'+E.Message),'提示:',MB_ICONERROR);
MainFormCreated:=False;
end;
end;
end;
finally
Free;
end;
end;
Except
on E:exception do
begin
Application.MessageBox(PChar('不能打开数据库,请确认网络联接正常并稍后再试。'+#13#10#13#10+
'错误信息:'+E.Message),'提示:',MB_ICONERROR);
MainFormCreated:=False;
end;
end;
finally
Free;
end;
end;
end else
begin
MainFormCreated:=False;
Application.Terminate;//强行中止系统。
end;
finally
FormDataBaseInfo.Free;
end;