Mam taką małą klasę do obsługi użytkowników programu.
unit classUzytkownik;
interface
uses ADODB, SysUtils;
type
TUzytkownik = class
DB: TADOConnection;
Id: Integer;
Login: String;
Haslo: String;
Nazwisko: String;
constructor Create(var ADOCOnnection: TADOConnection);
procedure Dodaj;
procedure WybierzUzytkownika(Id: Integer); overload;
procedure WybierzUzytkownika(Login: String; Haslo: String); overload;
function CzyIstnieje(Login: String; Haslo: String): Boolean;
function CzyLoginWolny(Login: String): Boolean;
procedure Aktualizuj;
procedure Usun;
end;
const TABELA_UZYTKOWNICY: String = 'umo_uzytkownicy';
implementation
constructor TUzytkownik.Create(var ADOCOnnection: TADOConnection);
begin
DB := ADOCOnnection;
end;
procedure TUzytkownik.Dodaj;
var Insert: TADOCommand;
begin
Insert := TADOCommand.Create(Self.DB);
Insert.Connection := Self.DB;
Insert.CommandText :=
'INSERT INTO ' + TABELA_UZYTKOWNICY + ' (' +
'Login, ' +
'Haslo, ' +
'Nazwisko ' +
') ' +
'VALUES('+
'"' + Self.Login + '", ' +
'"' + Self.Haslo + '", ' +
'"' + Self.Nazwisko + '" ' +
' );';
Insert.Execute;
end;
procedure TUzytkownik.Aktualizuj;
var Update: TADOCommand;
begin
Update := TADOCommand.Create(Self.DB);
Update.Connection := Self.DB;
Update.CommandText :=
'UPDATE ' + TABELA_UZYTKOWNICY + ' SET ' +
'Login = "' + Self.Login + '", ' +
'Haslo = "' + Self.Haslo + '", ' +
'Nazwisko = "' + Self.Nazwisko + '" ' +
'WHERE Id = "' + IntToStr(Self.Id) + '" LIMIT 1;';
Update.Execute;
end;
procedure TUzytkownik.WybierzUzytkownika(Id: Integer);
var DataSet: TADODataSet;
begin
DataSet := TADODataSet.Create(DB);
DataSet.Connection := DB;
DataSet.CursorType := ctStatic;
DataSet.CommandText :=
'SELECT * FROM ' + TABELA_UZYTKOWNICY + ' ' +
'WHERE id = ' + IntToStr(Id) + ' LIMIT 1;';
DataSet.Open;
Self.Id := DataSet.FieldByName('Id').AsInteger;
Self.Login := DataSet.FieldByName('Login').AsString;
Self.Haslo := DataSet.FieldByName('Haslo').AsString;;
Self.Nazwisko := DataSet.FieldByName('Nazwisko').AsString;
end;
procedure TUzytkownik.WybierzUzytkownika(Login: String; Haslo: String);
var DataSet: TADODataSet;
begin
DataSet := TADODataSet.Create(DB);
DataSet.Connection := DB;
DataSet.CursorType := ctStatic;
DataSet.CommandText :=
'SELECT * FROM ' + TABELA_UZYTKOWNICY + ' ' +
'WHERE Login = "' + Login + '" AND haslo = "' + Haslo + '" LIMIT 1;';
DataSet.Open;
Self.Id := DataSet.FieldByName('Id').AsInteger;
Self.Login := DataSet.FieldByName('Login').AsString;
Self.Haslo := DataSet.FieldByName('Haslo').AsString;;
Self.Nazwisko := DataSet.FieldByName('Nazwisko').AsString;
end;
function TUzytkownik.CzyIstnieje(Login: String; Haslo: String): Boolean;
var DataSet: TADODataSet;
begin
DataSet := TADODataSet.Create(DB);
DataSet.Connection := DB;
DataSet.CursorType := ctStatic;
DataSet.CommandText :=
'SELECT COUNT(*) FROM ' + TABELA_UZYTKOWNICY + ' ' +
'WHERE Login = "' + Login + '" AND haslo = "' + Haslo + '" ;';
DataSet.Open;
if DataSet.Fields.Fields[0].Value > 0 then
Result := True
else
Result := False
end;
function TUzytkownik.CzyLoginWolny(Login: String): Boolean;
var DataSet: TADODataSet;
begin
DataSet := TADODataSet.Create(DB);
DataSet.Connection := DB;
DataSet.CursorType := ctStatic;
DataSet.CommandText :=
'SELECT COUNT(*) FROM ' + TABELA_UZYTKOWNICY + ' ' +
'WHERE Login = "' + Login + '" ;';
DataSet.Open;
if DataSet.Fields.Fields[0].Value > 0 then
Result := False
else
Result := True
end;
procedure TUzytkownik.Usun;
var Delete: TADOCommand;
begin
Delete := TADOCommand.Create(Self.DB);
Delete.Connection := Self.DB;
Delete.CommandText :=
'DELETE FROM ' + TABELA_UZYTKOWNICY + ' ' +
'WHERE id = "' + IntToStr(Self.Id) + '" ' +
'LIMIT 1;';
Delete.Execute;
end;
end.
1. Jak już wiele razy wspominałem, jestem początkującym amatorem, wiec jeśli widzicie jakieś błędy w tej klasie to napiszcie.
2. Chciałem zapytać o to jak zaimplementować listę użytkowników. Czy do tego pisze się osobną klasę czy można w tej? Dokładnie to chodzi mi o pobranie wszystkich użytkowników by później wyświetlić ich dane w ListView.
3. Będę musiał także zaimplementować jakiś mini-system uprawnień. Program jest podzielony na moduły, nie każdy użytkownik ma dostęp do każdego modułu. W każdym module są operacje typu: przeglądanie, dodawanie, modyfikacja, usuwanie. Usuwanie np. chcę zarezerwować wyłącznie dla admina. Proszę o wskazówki jak taki system uprawnień napisać.