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. �
  5. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ZConnection, Grids, DBGrids;
  6. type
  7. �
  8. TFormKontak = class(TForm)
  9. �
  10. DBGridKontak: TDBGrid;
  11. �
  12. procedure FormCreate(Sender: TObject);
  13. �
  14. private
  15. �
  16. { Private declarations }
  17. �
  18. public
  19. �
  20. { Public declarations }
  21. �
  22. end;
  23. var
  24. �
  25. FormKontak: TFormKontak;
  26. implementation
  27. �
  28. uses unDM;
  29. �
  30. {$R *.dfm}
  31. �
  32. procedure TFormKontak.FormCreate(Sender: TObject);
  33. �
  34. var sql:WideString ;
  35. �
  36. begin
  37. �
  38. sql:= 'SELECT c.id_kontak AS id,CONCAT(c.nm_depan," ",c.nm_belakang) '
  39. �
  40. 'AS "Nama Lengkap",c.alamat AS Alamat,c.email AS Email,'
  41. �
  42. 'b.nm_grup AS Grup FROM kontak c '
  43. �
  44. 'INNER JOIN grup b ON b.id_grup=c.id_grup';
  45. �
  46. DM.isiQry(DM.qryKontak,sql);
  47. �
  48. end;
  49. �
  50. end.
Parsed in 0.007 seconds, using GeSHi

//Unit file Data Modul

code : pascal
  1. unit unDM;
  2. interface
  3. uses
  4. �
  5. SysUtils, Classes, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  6. �
  7. ZConnection,IniFiles,Forms,Dialogs;
  8. type
  9. �
  10. TDM = class(TDataModule)
  11. �
  12. koneksi: TZConnection;
  13. �
  14. qryKontak: TZQuery;
  15. �
  16. DSKontak: TDataSource;
  17. �
  18. function KonekDB(serv,usr,pass,db:string):Boolean;
  19. �
  20. procedure DataModuleCreate(Sender: TObject);
  21. �
  22. private
  23. �
  24. flConfig:TIniFile;
  25. �
  26. function Encrypt(const s: String; CryptInt: Integer): String;
  27. �
  28. function Decrypt(const s: String; CryptInt: Integer): String;
  29. �
  30. { Private declarations }
  31. �
  32. public
  33. �
  34. procedure isiQry(qry:TZQuery;SqlStr:string);
  35. �
  36. { Public declarations }
  37. �
  38. end;
  39. var
  40. �
  41. DM: TDM;
  42. �
  43. const
  44. �
  45. c1 = 52845;
  46. �
  47. c2 = 22719;
  48. implementation
  49. {$R *.dfm}
  50. �
  51. function TDM.Encrypt(const s: String; CryptInt: Integer): String;
  52. �
  53. var
  54. �
  55. i: integer;
  56. �
  57. s2: string;
  58. �
  59. begin
  60. �
  61. if not (Length(s) = 0) then
  62. �
  63. for i := 1 to Length(s) do
  64. �
  65. s2 := s2 Chr(Ord(s[i]) CrypTint);
  66. �
  67. Result := s2;
  68. �
  69. end;
  70. function TDM.Decrypt(const s: String; CryptInt: Integer): String;
  71. �
  72. var
  73. �
  74. i: integer;
  75. �
  76. s2: string;
  77. �
  78. begin
  79. �
  80. if not (Length(s) = 0) then
  81. �
  82. for i := 1 to Length(s) do
  83. �
  84. s2 := s2 Chr(Ord(s[i]) - cryptint);
  85. �
  86. Result := s2;
  87. �
  88. end;
  89. function TDM.KonekDB(serv,usr,pass,db:string):Boolean;
  90. �
  91. var alm:string;
  92. �
  93. begin
  94. �
  95. Result := True;
  96. �
  97. alm:= ExtractFilePath(Application.ExeName);
  98. �
  99. flConfig := TINIFile.Create(alm '\konfigurasi.ini');
  100. �
  101. try
  102. �
  103. with koneksi do
  104. �
  105. begin
  106. �
  107. HostName:= Decrypt(flConfig.ReadString('data','host',serv),72);
  108. �
  109. User := Decrypt(flConfig.ReadString('data','user',usr),72);
  110. �
  111. Password := Decrypt(flConfig.ReadString('data','pass',pass),72);
  112. �
  113. Database := Decrypt(flConfig.ReadString('data','db',usr),72);;
  114. �
  115. Connected;
  116. �
  117. end;
  118. �
  119. except
  120. �
  121. Application.MessageBox('Gagal Melakukan Koneksi Database','Warning');
  122. �
  123. end;
  124. �
  125. end;
  126. �
  127. procedure TDM.isiQry(qry:TZQuery;SqlStr:string);
  128. �
  129. begin
  130. �
  131. with qry do
  132. �
  133. begin
  134. �
  135. SQL.Clear;
  136. �
  137. SQL.Text:=sqlSTR;
  138. �
  139. Open;
  140. �
  141. end;
  142. �
  143. end;
  144. procedure TDM.DataModuleCreate(Sender: TObject);
  145. �
  146. begin
  147. �
  148. KonekDB('localhost','root','root','fendi_db');
  149. �
  150. end;
  151. 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. �
  5. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ZConnection, Grids, DBGrids;
  6. type
  7. �
  8. TFormKontak = class(TForm)
  9. �
  10. DBGridKontak: TDBGrid;
  11. �
  12. procedure FormCreate(Sender: TObject);
  13. �
  14. private
  15. �
  16. { Private declarations }
  17. �
  18. public
  19. �
  20. { Public declarations }
  21. �
  22. end;
  23. var
  24. �
  25. FormKontak: TFormKontak;
  26. implementation
  27. �
  28. uses unDM;
  29. �
  30. {$R *.dfm}
  31. �
  32. procedure TFormKontak.FormCreate(Sender: TObject);
  33. �
  34. var sql:WideString ;
  35. �
  36. begin
  37. �
  38. sql:= 'SELECT c.id_kontak AS id,CONCAT(c.nm_depan," ",c.nm_belakang) '
  39. �
  40. 'AS "Nama Lengkap",c.alamat AS Alamat,c.email AS Email,'
  41. �
  42. 'b.nm_grup AS Grup FROM kontak c '
  43. �
  44. 'INNER JOIN grup b ON b.id_grup=c.id_grup';
  45. �
  46. DM.isiQry(DM.qryKontak,sql);
  47. �
  48. end;
  49. �
  50. end.
Parsed in 0.007 seconds, using GeSHi

//Unit file Data Modul

code : pascal
  1. unit unDM;
  2. interface
  3. uses
  4. �
  5. SysUtils, Classes, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  6. �
  7. ZConnection,IniFiles,Forms,Dialogs;
  8. type
  9. �
  10. TDM = class(TDataModule)
  11. �
  12. koneksi: TZConnection;
  13. �
  14. qryKontak: TZQuery;
  15. �
  16. DSKontak: TDataSource;
  17. �
  18. function KonekDB(serv,usr,pass,db:string):Boolean;
  19. �
  20. procedure DataModuleCreate(Sender: TObject);
  21. �
  22. private
  23. �
  24. flConfig:TIniFile;
  25. �
  26. function Encrypt(const s: String; CryptInt: Integer): String;
  27. �
  28. function Decrypt(const s: String; CryptInt: Integer): String;
  29. �
  30. { Private declarations }
  31. �
  32. public
  33. �
  34. procedure isiQry(qry:TZQuery;SqlStr:string);
  35. �
  36. { Public declarations }
  37. �
  38. end;
  39. var
  40. �
  41. DM: TDM;
  42. �
  43. const
  44. �
  45. c1 = 52845;
  46. �
  47. c2 = 22719;
  48. implementation
  49. {$R *.dfm}
  50. �
  51. function TDM.Encrypt(const s: String; CryptInt: Integer): String;
  52. �
  53. var
  54. �
  55. i: integer;
  56. �
  57. s2: string;
  58. �
  59. begin
  60. �
  61. if not (Length(s) = 0) then
  62. �
  63. for i := 1 to Length(s) do
  64. �
  65. s2 := s2 Chr(Ord(s[i]) CrypTint);
  66. �
  67. Result := s2;
  68. �
  69. end;
  70. function TDM.Decrypt(const s: String; CryptInt: Integer): String;
  71. �
  72. var
  73. �
  74. i: integer;
  75. �
  76. s2: string;
  77. �
  78. begin
  79. �
  80. if not (Length(s) = 0) then
  81. �
  82. for i := 1 to Length(s) do
  83. �
  84. s2 := s2 Chr(Ord(s[i]) - cryptint);
  85. �
  86. Result := s2;
  87. �
  88. end;
  89. function TDM.KonekDB(serv,usr,pass,db:string):Boolean;
  90. �
  91. var alm:string;
  92. �
  93. begin
  94. �
  95. Result := True;
  96. �
  97. alm:= ExtractFilePath(Application.ExeName);
  98. �
  99. flConfig := TINIFile.Create(alm '\konfigurasi.ini');
  100. �
  101. try
  102. �
  103. with koneksi do
  104. �
  105. begin
  106. �
  107. HostName:= Decrypt(flConfig.ReadString('data','host',serv),72);
  108. �
  109. User := Decrypt(flConfig.ReadString('data','user',usr),72);
  110. �
  111. Password := Decrypt(flConfig.ReadString('data','pass',pass),72);
  112. �
  113. Database := Decrypt(flConfig.ReadString('data','db',usr),72);;
  114. �
  115. Connected;
  116. �
  117. end;
  118. �
  119. except
  120. �
  121. Application.MessageBox('Gagal Melakukan Koneksi Database','Warning');
  122. �
  123. end;
  124. �
  125. end;
  126. �
  127. procedure TDM.isiQry(qry:TZQuery;SqlStr:string);
  128. �
  129. begin
  130. �
  131. with qry do
  132. �
  133. begin
  134. �
  135. SQL.Clear;
  136. �
  137. SQL.Text:=sqlSTR;
  138. �
  139. Open;
  140. �
  141. end;
  142. �
  143. end;
  144. procedure TDM.DataModuleCreate(Sender: TObject);
  145. �
  146. begin
  147. �
  148. KonekDB('localhost','root','root','fendi_db');
  149. �
  150. end;
  151. 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