Aplikasi Delphi Konek database layaknya php namun dengan Zeos, Mysql dan TIniFiles Ber Enkripsi

Minggu, 15 Januari 2012

Begin 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.
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

code : pascal
  1. unit unUtama;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ZConnection, Grids, DBGrids;
  5. type
  6. TFormKontak = class(TForm)
  7. DBGridKontak: TDBGrid;
  8. procedure FormCreate(Sender: TObject);
  9. private
  10. { Private declarations }
  11. public
  12. { Public declarations }
  13. end;
  14. var
  15. FormKontak: TFormKontak;
  16. implementation
  17. uses unDM;
  18. {$R *.dfm}
  19. procedure TFormKontak.FormCreate(Sender: TObject);
  20. var sql:WideString ;
  21. begin
  22. sql:= 'SELECT c.id_kontak AS id,CONCAT(c.nm_depan," ",c.nm_belakang) '
  23. 'AS "Nama Lengkap",c.alamat AS Alamat,c.email AS Email,'
  24. 'b.nm_grup AS Grup FROM kontak c '
  25. 'INNER JOIN grup b ON b.id_grup=c.id_grup';
  26. DM.isiQry(DM.qryKontak,sql);
  27. end;
  28. end.
Parsed in 0.007 seconds, using GeSHi

//Unit file Data Modul

code : pascal
  1. unit unDM;
  2. interface
  3. uses
  4. SysUtils, Classes, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  5. ZConnection,IniFiles,Forms,Dialogs;
  6. type
  7. TDM = class(TDataModule)
  8. koneksi: TZConnection;
  9. qryKontak: TZQuery;
  10. DSKontak: TDataSource;
  11. function KonekDB(serv,usr,pass,db:string):Boolean;
  12. procedure DataModuleCreate(Sender: TObject);
  13. private
  14. flConfig:TIniFile;
  15. function Encrypt(const s: String; CryptInt: Integer): String;
  16. function Decrypt(const s: String; CryptInt: Integer): String;
  17. { Private declarations }
  18. public
  19. procedure isiQry(qry:TZQuery;SqlStr:string);
  20. { Public declarations }
  21. end;
  22. var
  23. DM: TDM;
  24. const
  25. c1 = 52845;
  26. c2 = 22719;
  27. implementation
  28. {$R *.dfm}
  29. function TDM.Encrypt(const s: String; CryptInt: Integer): String;
  30. var
  31. i: integer;
  32. s2: string;
  33. begin
  34. if not (Length(s) = 0) then
  35. for i := 1 to Length(s) do
  36. s2 := s2 Chr(Ord(s[i]) CrypTint);
  37. Result := s2;
  38. end;
  39. function TDM.Decrypt(const s: String; CryptInt: Integer): String;
  40. var
  41. i: integer;
  42. s2: string;
  43. begin
  44. if not (Length(s) = 0) then
  45. for i := 1 to Length(s) do
  46. s2 := s2 Chr(Ord(s[i]) - cryptint);
  47. Result := s2;
  48. end;
  49. function TDM.KonekDB(serv,usr,pass,db:string):Boolean;
  50. var alm:string;
  51. begin
  52. Result := True;
  53. alm:= ExtractFilePath(Application.ExeName);
  54. flConfig := TINIFile.Create(alm '\konfigurasi.ini');
  55. try
  56. with koneksi do
  57. begin
  58. HostName:= Decrypt(flConfig.ReadString('data','host',serv),72);
  59. User := Decrypt(flConfig.ReadString('data','user',usr),72);
  60. Password := Decrypt(flConfig.ReadString('data','pass',pass),72);
  61. Database := Decrypt(flConfig.ReadString('data','db',usr),72);;
  62. Connected;
  63. end;
  64. except
  65. Application.MessageBox('Gagal Melakukan Koneksi Database','Warning');
  66. end;
  67. end;
  68. procedure TDM.isiQry(qry:TZQuery;SqlStr:string);
  69. begin
  70. with qry do
  71. begin
  72. SQL.Clear;
  73. SQL.Text:=sqlSTR;
  74. Open;
  75. end;
  76. end;
  77. procedure TDM.DataModuleCreate(Sender: TObject);
  78. begin
  79. KonekDB('localhost','root','root','fendi_db');
  80. end;
  81. end.
Parsed in 0.022 seconds, using GeSHi
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

0 komentar:

Posting Komentar

Lagu Daerah Bengkulu Selatan

http://www.ziddu.com/download/17765598/PantaiPasarBawah.mp3.html
http://www.ziddu.com/download/17770609/Ading.mp3.html
http://www.ziddu.com/download/17770638/BatinLingiran.mp3.html
http://www.ziddu.com/download/17770712/BeghasKedurang.mp3.html
http://www.ziddu.com/download/17765528/MutighKupi.mp3.html
http://www.ziddu.com/download/17765460/KasiahSayang.mp3.html
http://www.ziddu.com/download/17765364/KemaneAgi.mp3.html
http://www.ziddu.com/download/17765259/KebilauBaliak.mp3.html
http://www.ziddu.com/download/17765180/KedurangBadakuDillahirka.mp3.html
http://www.ziddu.com/download/17764830/TukangKundai.mp3.html
http://www.ziddu.com/download/17764761/SukatanMatau.mp3.html
http://www.ziddu.com/download/17764705/Sinjang.mp3.html
http://www.ziddu.com/download/17764641/Seginim.mp3.html
http://www.ziddu.com/download/17764579/sekundangsetungguan.mp3.html

sumber: Radio Artha FM Bengkulu Selatan

Aplikasi Delphi Konek database layaknya php namun dengan Zeos, Mysql dan TIniFiles Ber Enkripsi


Begin 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.
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

code : pascal
  1. unit unUtama;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ZConnection, Grids, DBGrids;
  5. type
  6. TFormKontak = class(TForm)
  7. DBGridKontak: TDBGrid;
  8. procedure FormCreate(Sender: TObject);
  9. private
  10. { Private declarations }
  11. public
  12. { Public declarations }
  13. end;
  14. var
  15. FormKontak: TFormKontak;
  16. implementation
  17. uses unDM;
  18. {$R *.dfm}
  19. procedure TFormKontak.FormCreate(Sender: TObject);
  20. var sql:WideString ;
  21. begin
  22. sql:= 'SELECT c.id_kontak AS id,CONCAT(c.nm_depan," ",c.nm_belakang) '
  23. 'AS "Nama Lengkap",c.alamat AS Alamat,c.email AS Email,'
  24. 'b.nm_grup AS Grup FROM kontak c '
  25. 'INNER JOIN grup b ON b.id_grup=c.id_grup';
  26. DM.isiQry(DM.qryKontak,sql);
  27. end;
  28. end.
Parsed in 0.007 seconds, using GeSHi

//Unit file Data Modul

code : pascal
  1. unit unDM;
  2. interface
  3. uses
  4. SysUtils, Classes, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  5. ZConnection,IniFiles,Forms,Dialogs;
  6. type
  7. TDM = class(TDataModule)
  8. koneksi: TZConnection;
  9. qryKontak: TZQuery;
  10. DSKontak: TDataSource;
  11. function KonekDB(serv,usr,pass,db:string):Boolean;
  12. procedure DataModuleCreate(Sender: TObject);
  13. private
  14. flConfig:TIniFile;
  15. function Encrypt(const s: String; CryptInt: Integer): String;
  16. function Decrypt(const s: String; CryptInt: Integer): String;
  17. { Private declarations }
  18. public
  19. procedure isiQry(qry:TZQuery;SqlStr:string);
  20. { Public declarations }
  21. end;
  22. var
  23. DM: TDM;
  24. const
  25. c1 = 52845;
  26. c2 = 22719;
  27. implementation
  28. {$R *.dfm}
  29. function TDM.Encrypt(const s: String; CryptInt: Integer): String;
  30. var
  31. i: integer;
  32. s2: string;
  33. begin
  34. if not (Length(s) = 0) then
  35. for i := 1 to Length(s) do
  36. s2 := s2 Chr(Ord(s[i]) CrypTint);
  37. Result := s2;
  38. end;
  39. function TDM.Decrypt(const s: String; CryptInt: Integer): String;
  40. var
  41. i: integer;
  42. s2: string;
  43. begin
  44. if not (Length(s) = 0) then
  45. for i := 1 to Length(s) do
  46. s2 := s2 Chr(Ord(s[i]) - cryptint);
  47. Result := s2;
  48. end;
  49. function TDM.KonekDB(serv,usr,pass,db:string):Boolean;
  50. var alm:string;
  51. begin
  52. Result := True;
  53. alm:= ExtractFilePath(Application.ExeName);
  54. flConfig := TINIFile.Create(alm '\konfigurasi.ini');
  55. try
  56. with koneksi do
  57. begin
  58. HostName:= Decrypt(flConfig.ReadString('data','host',serv),72);
  59. User := Decrypt(flConfig.ReadString('data','user',usr),72);
  60. Password := Decrypt(flConfig.ReadString('data','pass',pass),72);
  61. Database := Decrypt(flConfig.ReadString('data','db',usr),72);;
  62. Connected;
  63. end;
  64. except
  65. Application.MessageBox('Gagal Melakukan Koneksi Database','Warning');
  66. end;
  67. end;
  68. procedure TDM.isiQry(qry:TZQuery;SqlStr:string);
  69. begin
  70. with qry do
  71. begin
  72. SQL.Clear;
  73. SQL.Text:=sqlSTR;
  74. Open;
  75. end;
  76. end;
  77. procedure TDM.DataModuleCreate(Sender: TObject);
  78. begin
  79. KonekDB('localhost','root','root','fendi_db');
  80. end;
  81. end.
Parsed in 0.022 seconds, using GeSHi
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