-
Notifications
You must be signed in to change notification settings - Fork 0
/
uDatabase.pas
116 lines (93 loc) · 2.7 KB
/
uDatabase.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
unit uDatabase;
interface
uses
System.SysUtils, System.Classes, Data.DB, Data.Win.ADODB;
type
TSQLDatabase = class
AdoSqlConnection: TADOConnection;
constructor Create(Server: string = ''; UserName: string = ''; Password: string = '');
destructor Destroy; override;
public
class function Connect(DatabaseName: string; Server: string = ''; UserName: string = ''; Password: string = ''): TADOConnection;
private
FServerName: string;
FUserName: string;
FPassword: string;
end;
var
SQLDatabase: TSQLDatabase;
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}
{$R *.dfm}
uses
IniFiles, VCL.Dialogs;
constructor TSQLDatabase.Create(Server: string = ''; UserName: string = ''; Password: string = '');
var
ini: TIniFile;
begin
ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
if Server <> '' then
FServerName := Server
else
FServerName := ini.ReadString('Database', 'Server', 'DESKTOP-5U1LDH5\sqlexpress');
if UserName <> '' then
FUserName := UserName
else
FUserName := ini.ReadString('Database', 'UserName', 'sa');
if Password <> '' then
FPassword := Password
else
FPassword := ini.ReadString('Database', 'Password', 'Password');
end;
destructor TSQLDatabase.Destroy;
begin
AdoSqlConnection.Connected := False;
end;
class function TSQLDatabase.Connect(DatabaseName: string; Server: string = ''; UserName: string = ''; Password: string = ''): TADOConnection;
function GetIniFile(ident: string; section: string = 'Database'): string;
var
ini: TIniFile;
begin
try
ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
Result := ini.ReadString(section, ident, '');
finally
ini.Free;
end;
end;
var
connStr: string;
begin
Result := TADOConnection.Create(nil);
if DataBaseName = '' then
begin
ShowMessage('Database name is not defined');
Exit;
end;
connStr := 'Provider=MSOLEDBSQL.1;';
if Server = '' then
Server := GetIniFile('Server');
if UserName = '' then
UserName := GetIniFile('UserName');
if Password = '' then
Password := GetIniFile('Password');
connStr := connStr + 'Password=' + Password + ';';
connStr := connStr + 'Persist Security Info=True;';
connStr := connStr + 'User ID=' + UserName + ';';
connStr := connStr + 'Initial Catalog=' + DataBaseName + ';';
connStr := connStr +
'Data Source=' + Server + ';' + //DESKTOP-5U1LDH5\sqlexpress;
'Initial File Name="";' +
'Server SPN="";' +
'Authentication=""';// +
// 'Access Token=""';
Result.Connected := False;
Result.ConnectionString := connStr;
try
Result.Connected := True;
except
on e: Exception do
raise Exception.Create(e.Message);
end;
end;
end.