Arsip: Aplikasi Delphi Konek database layaknya php namun dengan Zeos, Mysql dan TIniFiles Ber Enkripsi
by cadasmerah-camar in Security more 15 years ago 6608
Di dasari oleh kebutuhan membuat Aplikasi yang berhubungan dengan konfigurasi database, hal tersebut yang mendorongku untuk membuat Aplikasi ini. hitung hitung berbagi ilmu yang mudah-mudahan berguna.
Oke, kadang dalam kebutuhan tertentu kita perlu menggunakan file config seperti biasanya kalo di membuat web dengan php biasanya ada saja file config.php yang berisi konfigurasi database serta user pada database bila diterapkan dalam Delphi tentunya bisa saja karena adanya Fasilitas yang diberikan oleh Delphi yaitu Class TIniFile. Tapi kan ga lucu bila file konfigurasi tersebut terbuka tanpa ekripsi, apalagi dalam case ini kita menggunakan Komponen Zeos sebagai jembatan akses ke dalam Database MySQL yang tentunya membutuhkan parameter server,user,password, database yah ceritanya untuk security Sederhana menggunakan file konfigurasi.
Algoritmanya begini
1. Baca file konfigurasi.ini
2. tentukan parameter yang dibutuhkan oleh ZeosConnection untuk melakukan koneksi database parameternya yaitu : user,host,database dan password MySQL nya
3. jika berhasil konekkan databasenya
Langsung saja Buka Delphi anda dalam dalam uji coba saya menggunakan Delphi 7 tentunya tidak begitu banyak perbedaan pada delphi dengan Delphi versi atasnya. Asumsinya di dalam
Delphi kita telah terinstall Komponen Zeos kalo ga ada yah download dulu di sini
1. Buat Aplikasi baru : File -> New -> Application;
2. Agar manajemen Komponen lebih rapi tambahkan lagi Modul : File -> New -> Data Modul;
3. Ubah nama Form1 menjadi FormKontak.
4. Simpan unit1.pas dengan nama unUtama.pas dan unit2.pas dengan nama unDM.pas
5. Di dalam coding unUtama tepatnya di bawah baris implementation tambahkan uses unDM ; seperti di bawah ini
var
FormKontak: TFormKontak;
implementation
uses unDM;
{$R .dfm}
6. Letakan Komponen ini pada Data Modul
ZConnection ada di Tab Zeos Acces -> ubah Nama=koneksi, protocol sesuaikan dengan Veris MySQL yg kita gunakan aku menggunakan MySQL 5 property yang lainnya biarkan apa adanya
ZQuery ada di Tab Zeos Acces -> ubah Namanya Menjadi -> qryKontak karena query itu untuk menampilkan data Kontak (sebenarnya terserah saja masalah penamaan cari yg mudah saja), Ubah property Connection menjadi koneksi
Data Source ada di Tab Data Acces -> Nama = DSKontak, isi property DataSet ke qryKontak
untuk menampilkan data kita membutuhkan DBGrid ada di Tab Data Control kemudian letakaan Komponen DBGrid di dalam FormKontak ubah nama DBGrid1 menjadi DBGridKontak isi DataSource dengan DM.DSKontak
Ups klo begitu untuk mengisi data file konfiguras perlu ada Decripsi dong tenang aja aku juga Sertakan File untuk Membuat file konfigurasi.ini maaf bila koding nya masih berhamburan sana sini tinggal dirapikan saja misalnya file unit untuk encripsi_dekripsi di pisah jadi mudah untuk digunakan kembali tinggal kreasi kita saja terus di buat cek database konfigurasi misalnya klo tidak bisa konek jangan buat file konfigurasi.ini sekali lagi contoh ini sangat simple dan banyak celah kelemahannya masih bisa dikembangkan menggunakan Algoritma md5 misalnya harapanku yang baca bisa lebih mengembangkannya kalo aku sendiri biasanya file nya bukan lagi file.ini tapi file binary yah namanya juga belajar.
Let’s go to code
unit unUtama;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ZConnection, Grids, DBGrids;
type
TFormKontak = class(TForm)
DBGridKontak: TDBGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormKontak: TFormKontak;
implementation
uses unDM;
{$R .dfm}
procedure TFormKontak.FormCreate(Sender: TObject);
var sql:WideString ;
begin
sql:= 'SELECT c.id_kontak AS id,CONCAT(c.nm_depan," ",c.nm_belakang) '
'AS "Nama Lengkap",c.alamat AS Alamat,c.email AS Email,'
'b.nm_grup AS Grup FROM kontak c '
'INNER JOIN grup b ON b.id_grup=c.id_grup';
DM.isiQry(DM.qryKontak,sql);
end;
end.
//Unit file Data Modul
unit unDM;
interface
uses
SysUtils, Classes, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
ZConnection,IniFiles,Forms,Dialogs;
type
TDM = class(TDataModule)
koneksi: TZConnection;
qryKontak: TZQuery;
DSKontak: TDataSource;
function KonekDB(serv,usr,pass,db:string):Boolean;
procedure DataModuleCreate(Sender: TObject);
private
flConfig:TIniFile;
function Encrypt(const s: String; CryptInt: Integer): String;
function Decrypt(const s: String; CryptInt: Integer): String;
{ Private declarations }
public
procedure isiQry(qry:TZQuery;SqlStr:string);
{ Public declarations }
end;
var
DM: TDM;
const
c1 = 52845;
c2 = 22719;
implementation
{$R .dfm}
function TDM.Encrypt(const s: String; CryptInt: Integer): String;
var
i: integer;
s2: string;
begin
if not (Length(s) = 0) then
for i := 1 to Length(s) do
s2 := s2 Chr(Ord(s[i]) CrypTint);
Result := s2;
end;
function TDM.Decrypt(const s: String; CryptInt: Integer): String;
var
i: integer;
s2: string;
begin
if not (Length(s) = 0) then
for i := 1 to Length(s) do
s2 := s2 Chr(Ord(s[i]) - cryptint);
Result := s2;
end;
function TDM.KonekDB(serv,usr,pass,db:string):Boolean;
var alm:string;
begin
Result := True;
alm:= ExtractFilePath(Application.ExeName);
flConfig := TINIFile.Create(alm '\konfigurasi.ini');
try
with koneksi do
begin
HostName:= Decrypt(flConfig.ReadString('data','host',serv),72);
User := Decrypt(flConfig.ReadString('data','user',usr),72);
Password := Decrypt(flConfig.ReadString('data','pass',pass),72);
Database := Decrypt(flConfig.ReadString('data','db',usr),72);;
Connected;
end;
except
Application.MessageBox('Gagal Melakukan Koneksi Database','Warning');
end;
end;
procedure TDM.isiQry(qry:TZQuery;SqlStr:string);
begin
with qry do
begin
SQL.Clear;
SQL.Text:=sqlSTR;
Open;
end;
end;
procedure TDM.DataModuleCreate(Sender: TObject);
begin
KonekDB('localhost','root','root','fendi_db');
end;
end.
Maaf penjelasannya terlalu singkat karena memang di kerjakan secara singkat saja daripada di simpan di dalam uneg-uneg ngabisin space di kepalaku aja, jadi mending di bagi-bagikan ini link downloadnya di sini nitip di web orang ya
Konfig Maker + Source Download
Aplikasi Utama + Source Download
File kontak.sql Download
Random Articles
- Cool Calculator
- Mendeteksi drive baru /removable drive
- Tool pembersih memori leak
- easily load all kind of images (Gif, Ico, Jpeg and more) in a TImage
- Membuat sendiri UDF library bag.2
- Klasifikasi optical digit dengan artificial neural network
- Delphi For Android Progress & Component Poll
- Trap database exception message
- Membuat kontrol db aware
- Asosiasi Pengembang Software Indonesia, alternatif
AI Forward

๐ We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Recent Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago