Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
1/ 12
Membuat Aplikasi Database menggunakan Delphi Bagian I – Koneksi Database Pengantar Tulisan ini dibuat sebagai pengantar bagi anda untuk mempelajari pembuatan aplikasi database menggunakan program Delphi. Sebelum mempelajari tulisan ini, saya berasumsi bahwa anda sudah : mengenal lingkungan kerja delphi, dari mulai komponen, events, membuka, menyimpan, menjalankan program dst mengenal tipe data yang bisa digunakan dalam delphi mengenal konsep database dan dapat membuat file database, dalam hal ini menggunakan Ms. Access memahami/mengenal perintah-perintah SQL (Structured Query Language) Contoh program dalam tulisan ini menggunakan Delphi Enterprise Versi 7, database Microsoft Access versi 2002 dan untuk laporan menggunakan Quick Report. Bahasan pada tulisan ini mungkin pernah dibahas sebelumnya oleh penulis lain, akan tetapi saya kira tidak ada salahnya untuk sedikit dibahas kembali. Salah satu kendala yang menyebabkan bangsa kita tertinggal dalam bidang teknologi informasi menurut pendapat saya adalah kurangnya pemahaman/ penguasaan terhadap Bahasa Inggris, dikarenakan sebagian besar dokumentasi tentang teknologi informasi ditulis dalam Bahasa Inggris termasuk bahasa pemograman itu sendiri. Tulisan yang akan dibuat akan saya penggal menjadi beberapa bagian, dan untuk bagian pertama ini, bahasan yang akan disuguhkan antara lain: Mengenal arsitektur database dalam aplikasi berbasis Delphi Koneksi data menggunakan ADO, disertai contoh program Untuk bagian selanjutnya akan dibahas berdasarkan contoh program, karena biasanya pemahaman melalui praktek lebih cepat dari pada pemahaman melalui teori. Semoga bermanfaat !
Bambang Rahmanto
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
2/ 12
Aplikasi database menyediakan fasilitas bagi pengguna (user) untuk berinteraksi dengan informasi yang tersimpan dalam database. Database menyediakan struktur informasi yang dapat dipakai bersama oleh berbagai aplikasi (program). Delphi mendukung pembuatan aplikasi menggunakan relational database. Relational database ini menyimpan informasi berupa tabel-tabel, yang berisi beberapa baris (records) dan kolom (fields), kemudian tabel-tabel ini dimanipulasi menggunakan operasi sederhana yang dikenal dengan relational calculus. Ketika anda mendesain aplikasi database, anda harus mengerti betul bagaimana data tersebut diatur dan disimpan dalam database. Berdasarkan pengaturan tadi anda dapat mendesain tampilan pengguna (user interface) untuk menampilkan data ke pengguna dan menyediakan fasilitas untuk memasukan informasi baru atau memodifikasi data yang sudah ada, yang dikenal dengan entry data. Konsep database yang lebih rinci dan bagaimana pengaturan informasi dalam database tidak akan dibahas dalam tulisan ini.
Arsitektur Database Aplikasi database dibangun berdasarkan beberapa elemen tampilan (user interface elements), yaitu komponenkomponen yang mewakili informasi database (datasets), dan komponen-komponen yang terhubung satu sama lain dan yang terhubung ke sumber informasi database. Bagaimana cara anda mengatur komponen-komponen tersebut, itulah arsitektur dari aplikasi database yang anda buat. Dari sekian banyak cara untuk mengatur komponen-komponen dalam aplikasi database, yang paling umum dipakai menggunakan aturan (skema) sebagai berikut :
The user interface form (Form tampilan pengguna) Disarankan untuk memisahkan form tampilan pengguna dengan komponen-komponen database agar desain aplikasi menjadi lebih fleksibel, antara lain : perubahan pada informasi database, tidak selalu harus juga mengubah tampilan pengguna (UI), begitupun sebaliknya. Data module Jika anda sudah memisahkan form tampilan pengguna kedalam form tersendiri, maka anda dapat menggunakan data module untuk menyimpan komponen-komponen database (datasets), dan komponen yang terhubung ke datasets ini untuk digunakan bagian lain pada aplikasi anda. Data source Datasource menjembatani antara form tampilan pengguna dengan komponen datasets yang mewakili informasi dari database. Beberapa komponen data kontrol (data-aware controls) dalam sebuah form dapat menggunakan 1 datasource saja, sehingga pada saat pengguna berpindah baris (record), maka nilai informasi baris aktual akan ikut berubah pada masing-masing komponen data kontrol tersebut.
Dataset Jantungnya aplikasi database anda adalah dataset. Komponen ini merepresentasikan kumpulan baris (records) dari database. Kumpulan baris ini dapat berupa data dari satu tabel database, kumpulan kolom (fields) atau baris (records) dari sebuah tabel, atau informasi yang berasal dari satu tabel atau lebih yang terhubung menjadi sebuah view.
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
3/ 12
Data connection Beberapa dataset yang berbeda menggunakan mekanisme yang berbeda dalam hal koneksi ke informasi database. Perbedaan mekanisme ini membuat perbedaan besar dalam arsitektur aplikasi yang dapat anda buat. Terdapat 4 mekanisme dasar untuk koneksi data, yaitu: Koneksi langsung ke sebuah server database Menggunakan sebuah file terdedikasi Koneksi ke dataset lain Mengambil data dari objek RDS DataSpace. Kadang kala, semua mekanisme tersebut tergabung/terdapat dalam sebuah aplikasi.
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
4/ 12
Koneksi langsung ke server database Arsitekur database yang paling umum adalah menggunakan sebuah komponen penghubung (connection component) untuk membuat koneksi ke sebuah server database. Kemudian dataset mengambil data secara langsung dari server dan perubahan langsung disimpan ke server (posts edits). Ilustrasinya dapat digambarkan sebagai berikut :
Koneksi ke database Hampir semua komponen dataset dapat koneksi ke server database secara langsung. Sekali terhubung, dataset dapat berkomunikasi dengan server secara langsung. Ketika dataset di buka, dataset tersebut mengumpulkan data dari server, dan ketika menyimpan perubahan (post records), data tersebut di kirim kembali ke server untuk kemudian disimpan dalam database. Sebuah komponen koneksi dapat digunakan beberapa dataset, atau setiap dataset dapat menggunakan properti koneksinya masing-masing. Setiap dataset yang terhubung ke server database menggunakan jenis komponen koneksinya masing-masing, yang di desain untuk bekerja pada sebuah mekanisme akses data (single data access mechanism). Berikut ini daftar beberapa mekanisme akses data beserta komponen koneksinya : Database connection components Data access mechanism Borland Database Engine (BDE) ActiveX Data Objects (ADO) dbExpress InterBase Express
Connection component TDatabase TADOConnection TSQLConnection TIBDatabase
Untuk lebih jelasnya, dapat diuraikan sebagai berikut : Jika dataset yang digunakan adalah BDE, seperti TTable, TQuery atau TStoredProc, maka komponen koneksi yang digunakan adalah TDatabase. Untuk menghubungkan dataset ke database cukup dengan mengubah properti Database-nya. Sebenarnya anda tidak harus selalu menggunakan komponen database (TDatabase) ketika menggunakan komponen dataset BDE. Jika anda mengubah properti DatabaseName pada dataset, maka sebuah komponen database tercipta otomatis pada saat aplikasi dijalankan.
Jika dataset yang digunakan adalah ADO, seperti TADODataSet, TADOTable, TADOQuery atau TADOStoredProc, maka komponen koneksi yang digunakan adalah TADOConnection. Untuk menghubungkan dataset ke koneksi ADO cukup dengan mengubah properti Connection-nya. Sama
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
5/ 12
halnya dengan dataset BDE, anda tidak harus selalu menggunakan komponen (TADOConnection), yaitu dengan cara mengubah properti ConnectionString pada dataset-nya.
koneksi
Jika dataset yang digunakan adalah dbExpress, seperti TSQLDataSet, TSQLTable, TSQLQuery atau TSQLStoredProc, maka komponen koneksi yang digunakan adalah TSQLConnection. Untuk menghubungkan dataset ke TSQLConnection cukup dengan mengubah properti SQLConnection-nya. Ketika menggunakan dataset dbExpress anda harus selalu menggunakan komponen koneksinya (TSQLConnection). Perbedaan lainnya dibandingkan dataset yang lain adalah dbExpress selalu readonly dan unidirectional, dalam artian anda hanya bisa mengakses baris (records) secara berurutan, dan anda tidak dapat menggunakan komponen dataset yang mendukung pengeditan.
Jika dataset yang digunakan adalah InterBase Express, seperti TIBDataSet, TIBTable, TIBQuery atau TIBStoredProc, maka komponen koneksi yang digunakan adalah TIBDatabase. Untuk menghubungkan dataset ke komponen database IB, cukup dengan mengubah properti Database-nya. Sama seperti dataset dbExpress, anda harus selalu menggunakan komponen koneksinya (TIBDatabase).
Sebagai tambahan selain komponen diatas, anda dapat menggunakan dataset client khusus (specialized client dataset) seperti TBDEClientDataSet, TSimpleDataSet atau TIBClientDataSet dan komponen koneksi databasenya. Meskipun setiap tipe dataset menggunakan komponen koneksi yang berbeda, hampir semua mengerjakan pekerjaan yang sama dan mempunyai beberapa properties, methods dan events yang hampir sama.
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
6/ 12
Koneksi data menggunakan ADO Untuk memperjelas pemahaman tentang koneksi database, maka berikut ini contoh latihan koneksi yang akan dibuat menggunakan ADO. Fokus Bahasan : - TADOConnection, TADOTable Berikut ini langkah-langkahnya : 1) Buka Ms. Accsess, kemudian buat sebuah database bernama DataGudang menggunakan Ms. Access yang berisi tabel supplier, dengan kolom-kolom sebagai berikut: SUPPLIER Field Name MSP_ID MSP_KODE MSP_SUPPLIER MSP_CONTACT MSP_ALAMAT MSP_TELP MSP_KETERANGAN MSP_AKTIF
Data Type Number Text Text Text Text Text Text Text
Field Size Long Integer 10 30 30 50 30 50 1
Keys Primary Key
Default Value
"Y"
2) Buka Delphi, buat aplikasi baru, dan tempatkan komponen-komponen : 1 buah ADOConnection, 1 buah ADOTable, 1 buah Datasource, 1 buah DbNavigator dan 1 buah DbGrid. Kemudian atur propertinya sbb : Components ADOConnection1
ADOTable1
DataSource1 DBNavigator1 DBGrid1
Properties ConnectionString Connected Login Prompt Connection TableName Active Dataset Datasource ShowHint Datasource
Value * (Lihat penjelasan di bawah) True False ADOConnection1 SUPPLIER True ADOTable1 DataSource1 True DataSource1
Tampilan Form1 setelah diubah propertinya :
* Untuk ConnectionString pada ADOConnection1, ikuti langkah-langkah berikut :
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
7/ 12
(1) Klik tanda elipsis (…), maka akan muncul dialog :
(2) Pilih Use Connection String, laku klik Build…, akan muncul dialog :
(3) Pilih Microsoft Jet 4.0 OLE DB Provider lalu klik Next>>, akan muncul dialog :
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
8/ 12
Kemudian isi kolom Select or enter a database name: dengan nilai sesuai dengan alamat folder dan nama dari database yang akan diakses, dalam hal ini DataGudang.mdb (terletak pada folder E:\ Latihan\ 01\ ), dengan cara mengklik tombol elipsis (…) disampingnya. Contoh kolom yang telah terisi :
(4) Lakukan tes koneksi, dengan menekan tombol Test Connection, jika koneksi berhasil akan muncul dialog :
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
9/ 12
(5) Kemudian kilik OK beberapa kali, sehingga ConnectionString akan terisi dengan nilai : Provider=Microsoft.Jet.OLEDB.4.0;Data Info=False
Source=E:\Latihan\01\DataGudang.mdb;Persist
Security
Jika anda mengubah properti Connected menjadi True, maka akan muncul dialog :
Karena database anda tidak mempunyai password maka kosongkan lalu pilih OK. Dialog ini akan selalu muncul setiap kali anda melakukan koneksi ke database. Untuk menghilangkan dialog ini, ubah properti LoginPrompt menjadi False. 3) Simpan program (Save All) dengan nama unit Ulat01.pas dan project Latih01.dpr. Jalankan program (Run), maka program latihan pertama database anda telah selesai.
Kalau anda perhatikan bahwa kunci untuk menghubungkan aplikasi dengan database, terletak pada komponen ADOConnection1 pada properti ConnectionString. Seperti pada contoh diatas, database terletak pada folder : E:\Latihan\01\. Berbagai pertanyaan mungkin akan muncul, diantaranya : Bagaimana kalau aplikasi tidak selalu pada folder tersebut ? Atau demi keamanan data, database yang digunakan menggunakan password, bagaimana cara mengaksesnya ? Pada dbgrid nama kolom saya rasa kurang user friendly, karena ada kode-kode tertentu seperti MSP_ID, MSP_KODE. Bagaimana mengubahnya atau saya mau tidak semua kolom ditampilkan ?
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
10/ 12
Sentuhan akhir program Semua pertanyaan di atas akan terjawab pada bagian ini. Jika folder database tidak selalu berada pada folder yang sama anda dapat mengubahnya pada saat runtime (aplikasi dijalankan). Dan untuk mengakses database yang terproteksi dengan password, maka pada properti ConnectionString pada komponen TADOConnetion tambahkan keyword : Jet OLEDB:Database Password=""
diantara tanda petik diisi password database anda. Berikut langkah-langkahnya : 1) Membuat password database pada Ms. Access. Untuk membuat password database pada Ms. Access, maka database tersebut harus dibuka secara eksklusif. Jika anda masih bekerja pada delphi dan file latihan diatas terbuka, maka anda harus memutuskan koneksinya, dengan cara mengubah properti Connected pada komponen ADOConnection1 menjadi False. Jalankan Ms. Access, kemudian pada menu pilih Open, tentukan database yang dimaksud (DataGudang.mdb, cukup di klik saja), pada tombol Open pilih Open Exclusive. Setelah database terbuka, pada menu Tools|Security pilih Set Database Password, maka dialog sbb akan muncul :
Isi kolom password dan verify dengan nilai yang sama, sebagai contoh masukkan kata ‘Huhuy’, tanpa tanda petik tentunya. Kemudian pilih OK, maka database anda sudah terproteksi. 2) Untuk mengubah ConnectionString pada saat runtime, misalnya pada saat form diciptakan (FormCreate), tambahkan kode program dibawah ini, dengan cara memilih komponen Form1 kemudian pada Object Inspector klik Events kemudian klik ganda OnCreate (atau anda juga bisa langsung kilik ganda pada Form1) : procedure TForm1.FormCreate(Sender: TObject); var FileDB: string; begin // Tentukan letak file database anda // Dalam hal ini database selalu berada pada folder yang sama dengan aplikasi FileDB:= ExtractFilePath(Application.ExeName) + 'DataGudang.mdb'; // Ubah Connection string ADOConnection1.Connected:= False; ADOConnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + FileDB + ';Persist Security Info=False;' + 'Jet OLEDB:Database Password="Huhuy"'; ADOConnection1.Connected:= True; // Buka tabel supplier ADOTable1.Open; end;
3) Jalankan program, maka program database yang terproteksi telah selesai.
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
11/ 12
Untuk mengubah nama kolom pada DbGrid, klik kanan di atas DbGrid lalu pilih menu Columns Editor… (atau anda juga bisa kilik ganda pada DBGrid), akan muncul dialog :
Anda bisa mengambil kolom dari tabel menggunakan tombol Add New, tetapi agar lebih praktis anda bisa mengambil semua kolom dari tabel dengan menggunakan tombol Add All Fields (tombol ketiga). Untuk mengaktifkan tombol Add All Fields, maka anda harus membuka dahulu dataset yang terhubung ke DbGrid tersebut, dalam hal ini ADOTable1 property Active ubah menjadi True. Setelah di klik tombol Add All Fields, maka dialog akan berubah menjadi :
Setiap kolom mempunyai properti-nya masing-masing, dan untuk mengubah judul kolom terletak pada properti Title.Caption, sedangkan untuk menyembunyikan kolom tertentu terletak pada properti Visible.
Lakukan perubahan pada kolom-kolom sesuai yang anda kehendaki. Berikut ini contoh aplikasi setelah dilakukan beberapa penyesuaian :
© 2008 Bara Project
Delphi- Resource
Membuat Aplikasi Database Menggunakan Delphi Bagian I – Koneksi Database
12/ 12
Tips : Sebaiknya komponen koneksi dan komponen dataset dihubungkan ke database saat runtime dan hanya dataset yang diperlukan saja yang dibuka, sebagai contoh TADOConnection property Connected-nya di set True dan TADOTable property Active di set True saat runtime. Hal ini akan menghemat waktu saat loading aplikasi. Jika data dalam tabel pada database anda berjumlah banyak, sebaiknya anda menghindari penggunaan TADOTable, dikarenakan sifat dari TADOTable yang akan mengambil semua baris data (records) pada tabel tersebut pada saat TADOTable tersebut dibuka. Anda bisa menggunakan TADODaset atau TADOQuery yang bisa memilih record yang diperlukan saja. Usahakan tidak menyimpan data gambar (BLOB/ OLE Object) pada database, selain proses pengambilannya memakan waktu, ukuran database anda akan berkembang dengan cepat.
Catatan : Konsep koneksi database diatas berlaku pada hampir semua jenis DBMS (Database Management System), antara lain : Ms. SQL Server dan Oracle, anda hanya perlu melakukan beberapa penyesuaian saja. Jadi anda tidak perlu khawatir jika suatu saat database yang digunakan bukan Ms. Access. Penggunaan Ms. Access pada aplikasi ditujukan untuk alasan kepraktisan saja. Dan dengan berjalannya waktu dan bertambahnya kemampuan anda, anda akan dapat menentukan komponen koneksi apa saja paling cocok dengan database tertentu.
Sumber : Delphi 7.0 – Help File DevGuide: Developing Database Applications Database architecture Connecting directly to a database server
© 2008 Bara Project Contact Me : Bambang Rahmanto
[email protected] http://www.delphi-resource.com © 2008 Bara Project
Delphi- Resource