Rabu, 21 Oktober 2015

Cara membuat sebuah database menggunakan konsep-konsep database paling dasar

Tutorial ini adalah bagaimana membuat sebuah database menggunakan konsep-konsep database paling dasar. Pada pembuatan database kali ini tidak mennggunakan SQL jadi hanya menggunakan sebuah class yang berisi tentang table, dan dari table tersebut akan diisi record data.
Baik untuk memulai toturial kali ini kita membuat satu projek Delphi. Kita akan lebih banyak menggunakan script editor untuk membuat database.

Buat lah Type seperti berikut :
  FFieldData=^TFieldData;
  TFieldData=record
    index:integer;
    Name:String[100];
    Value:Integer;
  end;
yang mana field di atas merupakan sebuah table yang berisi index, name dan value. Kemudian buat databasenya dengan menggunakan class seperti berikut :
  TDataBase=class
  private
    FList:TList;
    procedure SetFieldData(Index:integer;Data:TFieldData);
    function GetFieldData(Index:integer):TFieldData;
    function Counter:Integer;
  public
    constructor Create;
    destructor Destroy;override;
    function Add(Data:TFieldData):integer;
    procedure Delete(Index:Integer);
    procedure SaveToFile(Filename:string);
    procedure LoadFromFile(Filename:string);
    procedure Clear;
    property Count:integer read Counter;
    property Item[Index:Integer]:TFieldData read GetFieldData write SetFieldData;default;
  end;

constructor adalah untuk mempersiapkan memori dan membuat sebuah database begitu juga destructor untuk membebaskan memory yang telah digunakan dan menghapus database. isilah pada masing-masing dengan syntax berikut :
constructor TDataBase.Create;
begin
  inherited Create;
  FList:=TList.Create;
end;

destructor TDataBase.Destroy;
begin
  FList.Free;
  inherited Destroy;
end;

Kemudian function Add adalah fungsi untuk menambahkan record ke dalam database, gunakan script berikut
function TDatabase.Add(Data:TFieldData):integer;
var P:FFieldData;
begin
  New(P);
  P^:=Data;
  result:=FList.Add(P);
end;

Procedure delete dan procedure clear adalah untuk menghapus record data dari database dimana delete dapat mengapus per record data sedangkan clear untuk menghapus seluruh record data.
procedure TDatabase.Delete(index:integer);
begin
  FList.Delete(Index);
end;

Procedure TDatabase.Clear;
begin
  FList.Clear;
end;

procedure savetofile merupakan cara untuk menyimpan semua record data ke dalam sebuah file di komputer dan procedure loadfromfile merupakan cara untuk membuka file database yang sudah dibuat tersebut. Perhatikan script di bawah ini. Proses penyimpanan menggunakan Tfilestream sehingga data yang disimpan dikompress dan menjadi file binary.
procedure TDatabase.SaveToFile(Filename:string);
var Data:TFieldData;
    i,n:integer;
    F:TFileStream;
begin
  F:=TFileStream.Create(filename,fmcreate or fmopenwrite);
  try
    n:=Counter;
    F.WriteBuffer(n,sizeof(n));
    for i:=0 to n-1 do begin
      Data:=GetFielddata(i);
      F.WriteBuffer(Data,sizeof(Data));
    end;
  finally f.Free; end;
end;

procedure TDatabase.LoadFromFile(Filename:string);
var Data:TFieldData;
    i,n:Integer;
    F:TFileStream;
begin
  F:=TFileStream.Create(Filename,fmopenread);
  try
    F.ReadBuffer(n,sizeof(n));
    for i:=0 to n-1 do begin
      F.ReadBuffer(Data,sizeof(data));
      Add(Data);
    end;
  finally F.Free; end;
end;

Kemudian pada property item merupakan cara mengakses dan merubah record data yakni dengan menggunakan link GetFieldData dan SetFieldData. Jadi property ini bekerja pada function-function tersebut.
procedure TDatabase.SetFieldData(Index:integer;Data:TFieldData);
var P:FFieldData;
begin
  P:=FList[Index];
  P^:=Data;
  FList[Index]:=P;
end;

function TDatabase.GetFieldData(Index:integer):TFieldData;
var P:FFieldData;
begin
  P:=FList[index];
  result:=P^;
end;

Sedangkan pada property count menggunakan link ke function counter yang berfungsi untuk mengetahui jumlah record data yang sudah tersimpan di dalam database. Prehatikan script berikut
function TDatabase.Counter:integer;
begin
  result:=FList.Count;
end;

Sekarang kita coba implementasikan class database tersebut dalam sebuah projek Delphi. Tambahkanlah 6 button , 3 edit, memo, savedialog dan opendialog. Sehingga seperti berikut :

  1. Button 1 diisi untuk melakukan penambahan record data ke dalam database yang sudah dibuat.
  2. Button 2 diisi untuk menghapus record data satu demi satu.
  3. Button 3 untuk menghapus semua data dalam database
  4. Button4 adalah untuk mengedit isi dari database melalui edit1, edit2, dan edit3
  5. Button 5 adalah button yang berfungsi untuk menyimpan database ke dalam file
  6. Button6 berfunngsi untuk membuka file database yang suddah disimpan.

Sebelum mengisi semua button kita harus mengaktifkan database pada saat form dibuat. Dan membebaskan database saat form ditutup. Buatlah sebuah variable global untuk databasenya. Untuk lebih lengkapnya perhatikan script berikut :
var DataBase:TDatabase;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Database:=TDatabase.Create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Database.Destroy;
end;

Proses untuk menampilkan seluruh isi database bisa menggunakan script tambahan, sebagai contoh tambahkan procedure showdata pada private dari class form dan isilah script berikut :
procedure TForm1.ShowData;
var Data:TFieldData;
    i:integer;
begin
  memo1.Lines.Clear;
  for i:=0 to Database.Count-1 do begin
    Data:=Database[i];
    memo1.Lines.Add(format('%d'#9'%100s'#9'%d',[Data.index,data.Name,data.Value]));
  end;
end;

Sekarang isi masing-masing button dengan perintah berikut:
  1. Button 1 yang memberikan contoh bagaimana cara menambahkan data ke dalam database dengan script berikut:
    procedure TForm1.Button1Click(Sender: TObject);
    var data:TFieldData;
    begin
      Data.index:=0;
      data.Name:='Data 1';
      data.Value:=120;
      Database.Add(Data);
    
      Data.index:=1;
      data.Name:='Data 2';
      data.Value:=130;
      Database.Add(Data);
    
      Data.index:=2;
      data.Name:='Data 3';
      data.Value:=140;
      Database.Add(Data);
    
      Data.index:=3;
      data.Name:='Data 4';
      data.Value:=150;
      Database.Add(Data);
    
      ShowData;
    end;
    
  2. Button 2 merupakan contoh bagaimana cara menghapus record data dari database satu demi satu. Isilah seperti script berikut
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Database.Delete(0);
      ShowData;
    end;
    
  3. Button 3 berisi contoh bagaimana mennghapus seluruh isi dari database.
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      Database.Clear;
      showdata;
    end;
    
  4. Button 4 berisi bagaimana cara mengedit seubah record data.
    procedure TForm1.Button4Click(Sender: TObject);
    var index:integer;
        data:TFieldData;
    begin
      index:=strtoint(edit1.Text);
      Data:=Database[index];
      Data.Name:=edit2.Text;
      Data.Value:=strtoint(edit3.Text);
      Database[index]:=Data;
      showdata;
    end;
    
  5. Button 5 berisi contoh bagaimana cara menyimpan database ke dalam sebuah file
    procedure TForm1.Button5Click(Sender: TObject);
    begin
      savedialog1.Filter:='Data|*.dba';
      if savedialog1.Execute then begin
        Database.SaveToFile(changefileext(savedialog1.FileName,'.dba'));
      end;
    end;
    
  6. Button 6 berisi contoh bagaimana cara membuka file database yang sudah tersimpan sebelumnya.
    procedure TForm1.Button6Click(Sender: TObject);
    begin
      opendialog1.Filter:='Data|*.dba';
      if opendialog1.Execute then begin
        Database.LoadFromFile(opendialog1.FileName);
        showdata;
      end;
    end;
    

Jika berhasil maka hasilnya sebagai berikut :

Lihat pula video untuk tutorial ini.

Tidak ada komentar:

Posting Komentar