Halaman 48 Database Menggunakan ADOCE
Database Menggunakan ADOCE
Objektif :
• Memahami ADOCE & Database Pada Pocket PC
• Mengaplikasikan Penggunaan Database Pada Aplikasi Pocket PC • Memahami Penggunaan Perintah SQL
5.1. Mengenal ADOCE
Microsoft ActiveX Data Object for Windows CE (kemudian disingkat ADOCE) adalah sebuah kontrol pada Embedded Visual Basic yang fungsinya adalah untuk menghubungkan aplikasi dengan sebuah sumber data (yang selanjutnya kita sebut database). Dengan menggunakan ADOCE ini kita dimungkinkan untuk menciptakan suatu koneksi pada sebuah Pocket PC database, lalu membuat dan memodifikasi database tersebut.
Koneksi atau perubahan database dilakukan dengan cara menciptakan suatu variabel object yang mewakili kontrol ADOCE yang kemudian akan dipanggil fungsi-fungsi dan prosedur-prosedur untuk melaksanakan pekerjaannya. Fungsi dan prosedur yang terdapat pada ADOCE memiliki syntax yang kurang lebih sama dengan ADO yang biasa digunakan dalam pembuatan program Desktop PC.
Secara default terdapat dua jenis object yang dimiliki oleh ADOCE, yaitu Connection dan Recordset dimana kedua object tersebut dapat membuat suatu koneksi antara aplikasi yang akan dibuat dengan sumber data. Object Connection digunakan untuk menjalankan perintah yang diharapkan tidak mengembalikan data. Sedangkan object Recordset digunakan untuk menjalankan perintah y ang dapat mengembalikan data untuk memodifikasi isi database yang telah dikoneksikan tersebut, baik itu menyangkut table, field maupun masing-masing recordset.
Secara default, Microsoft Embedded Visual Basic mengikut sertakan ADOCE versi 3.0, tapi file yang membuat ADOCE ini berjalan belum tentu sudah terdapat pada Pocket PC device. Sehingga, apabila seorang programmer membuat aplikasi yang menggunakan kontrol
Database Menggunakan ADOCE Halaman 49
ADOCE, terdapat 9 file yang harus disertakan untuk mengaktifkan kontrol ADOCE. Cara yang paling mudah agar aplikasi yang mengandung kontrol ADOCE dapat berjalan dengan lancar adalah dengan membuat paket instalasinya, dan mengikut sertakan kontrol ADOCE dalam paket instalasi tersebut, sehingga ketika proses instalasi dilakukan, maka file utama ADOCE akan di-copy dan diregistrasikan secara otomatis. Sembilan file tersebut adalah, Adoce30.dll, Adocedb30.dll, Adoceoledb30.dll, Adosync.dll, Fileosp.dll, Msdadc.dll, Msdaer.dll, Msdaeren.dll dan Msdaosp.dll.
Pada ADOCE versi 3.0 kita dimungkinkan mengakses data dengan menggunakan perintah SQL dan memungkinkan juga mengakses data menggunakan provider OLE DB. Selain itu ADOCE versi 3.0 juga memiliki beberapa object tambahan yang hampir sama digunakan oleh ADO yaitu Field, Fields, dan Error selain yang dimiliki oleh ADOCE secara default Connection dan Recordset.
Cara menggunakan ADOCE pada Micorosft Embedded Visual Basic adalah : • Pilih menu Project lalu References.
• Pada dialog box References, pilih Microsoft CE ADO Control 3.0. • Tekan OK.
Halaman 50 Database Menggunakan ADOCE
Untuk membuat sebuah variabel merujuk pada kontrol ADOCE 3.0, caranya adalah seperti berikut ini :
Dim objConnection Dim objRecordset
Set objConnection = CreateObject("ADOCE.Connection.3.0") Set objRecordset = CreateObject("ADOCE.Recordset.3.0")
Kedua object diatas tersebut dapat dibuat sendiri-sendiri atau secara bersamaan sesuai dengan kebutuhannya.
5.2. Database Pada Pocket PC
Lain halnya dengan database yang digunakan pada Desktop PC, database yang digunakan pada Pocket PC adalah database dengan ekstension *.cdb. Database dengan ekstension *.cdb tersebut merupakan database yang dapat dibaca dan dimanipulasi oleh ADOCE.
Database dengan ekstension *.cdb dibuat dengan melakukan proses konversi yang dapat dilakukan oleh program Microsoft ActiveSync atau dengan menggunakan program pihak ketiga. Sumber datanya bisa berasal dari database Microsoft Access (*.mdb) atau bisa juga berasal dari Open Database Connectivity (ODBC). Karena tingkat kekuatan (robust) database Pocket PC lebih rendah dibandingkan database Micorosft Access atau ODBC, maka kadang-kadang terdapat kehilangan informasi (bukan data) pada proses konversi tersebut.
Proses pengkonversian data akan gagal dilakukan bila : • Semua tipe data pada field tidak didukung oleh tipe data *.cdb.
• Terdapat table dengan nama sama dengan table sistem (nama MSYS).
Berikut ini merupakan tipe data yang didukung oleh *.cdb dan tipe data hasil konversi dari Microsoft Access atau ODBC.
MDB ODBC CDB
Text sql_varchar Varchar
Memo sql_longvarchar Text
LongInt sql_integer Integer
sql_bigint Integer
Byte sql_tinyint Smallint
Int sql_smallint Smallint
Single sql_real Double
Database Menggunakan ADOCE Halaman 51
sql_float Double
ReplID sql_varbinary Varbinary
Date/Time sql_timestamp Datetime
Currency sql_numeric Double
AutoNumber sql_integer Integer
YesNo sql_bit Boolean
OleObject sql_longvarbinary Varbinary HyperLink sql_longvarchar Text
Lookup sql_varchar Varchar
Pocket PC juga memiliki database internal yang menyimpan data-data mengenai sistem operasi, program-program dan lain-lain yang dibutuhkan untuk melaksanakan pekerjaannya. Apabila dalam pembuatan koneksi menggunakan Object Recordset dan kita tidak menyebutkan nama database *.cdb yang akan dibuka, maka secara otomatis kita disambungkan pada database internal tersebut. Pada database internal tersebut, kita juga dapat membuat table, fields dan lain-lain sama halnya pada database *.cdb.
5.3. Mengkoneksikan Database
Sebelum kita menggunakan sebuah database untuk dibuka atau dimanipulasi datanya, kita harus membuat suatu koneksi dengan file database tersebut. Koneksi tersebut diwakili oleh sebuah variabel yang difungsikan dengan menggunakan pernyataan Set dan CreateObject, caranya adalah seperti berikut ini :
Dim connDatabase
Set connDatabase = CreateObject(“ADOCE.Connection.3.0”)
Setelah object koneksi itu dibuat, file database *.cdb dibuka dengan menggunakan metode Open.
Bentuk umumnya adalah sebagai berikut :
connection.Open [ConnectionString As String], [UserID As String], [Password As String]
Keterangan :
ConnectionString
ConnectionString ini merupakan string informasi proses pembukaan database, bisa juga hanya diisi sumber datanya (data source).
Halaman 52 Database Menggunakan ADOCE
UserID yang digunakan untuk proses verifikasi sumber data.
Password
Passwod yang digunakan untuk proses verifikasi sumber data.
Berikut ini merupakan beberapa metode lainnya yang terdapat pada object Connection : • EXECUTE
Metode ini digunakan untuk mengeksekusikan perintah SQL yang mengembalikan hasil berupa data. Misalnya digunakan untuk pembuatan table baru, penghapusan table dan lain sebagainya
B.U :
connection.Execute [CommandText], [RecordsAffected]
Keterangan :
CommandText
Perintah yang akan diberlakukan.
RecordsAffected
Tempat perintah diberlakukan.
• CLOSE
Metode ini digunakan untuk menutup koneksi yang telah selesai digunakan. B.U :
connection.Close
Contoh untuk membuka database MyDatabase.cdb :
connDatabase.Open “data source = \MyDatabase.cdb”
atau
connDatabase.Open “MyDatabase.cdb”
Sedangkan, untuk membuka database SQL Server CE edition, caranya adalah :
connDatabase.Open "Provider = SQLOLEDB; Data Source = DATBTEST; Initial Catalog = TEST; User Id = sa; Password =;"
Database Menggunakan ADOCE Halaman 53
Perlu diingat bahwa connection string pada metode open diatas tidak bisa langsung membuka table, baik table pada database *.cdb maupun table pada database internal Pocket PC. Aktifitas yang menyangkut table dilakukan pada metode Execute setelah database tujuannya dibuka pada metode Open, itupun sebatas pada perintah DDL (Data Definition Languange). Contoh :
connDatabase.Execute "CREATE TABLE tableBaru(fieldsatu TEXT, fielddua INTEGER)"
Apabila koneksi yang telah dibuat itu tidak digunakan lagi, untuk menghemat memori dan menghindari terjadinya kesalahan pada penggunaan variabel yang sama, maka sebaiknya koneksi tersebut ditutup dengan menggunakan metode Close.
connDatabase.Close
Set connDatabase = Nothing
5.4. Bekerja Dengan Recordset
Segala pekerjaan yang menyangkut pada table dilaksanakan pada object Recordset. Caranya adalah dengan membuat koneksi ke Recordset dengan menggunakan variabel yang mewakili object ADOCE.Recordset.
Dim connRecordset
Set connRecordset = CreateObject(“ADOCE.Recordset.3.0”)
Untuk membuka table agar dapat dimanipulasi datanya, metode yang digunakan adalah Open.
connRecordset.Open App.path & "\myTable.cdb"
Pada metode Open tersebut juga dapat digunakan perintah SQL untuk proses manipulasi data lebih lanjut.
Bentuk umumnya adalah sebagai berikut :
recordset.Open Source, [ActiveConnection], [CursorType], [LockType], [Options]
Halaman 54 Database Menggunakan ADOCE
Keterangan :
Source
Nama table yang akan dibuka, atau perintah SQL yang digunakan untuk melakukan proses pada database.
ActiveConnection
File database (*.cdb) atau database internal yang akan dibuka.
CursorType
Tipe kursor yang akan digunakan dalam proses pengambilan data pada database.
Konstanta Nilai Keterangan
adOpenForwardOnly 0 Hanya memperbolehkan proses pembacaan data record dengan pergerakan kursor maju.
adOpenKeyset 1 Hanya memperbolehkan proses pembacaan data record dengan arah pergerakan kursor yang tidak bisa ditentukan oleh kita.
adOpenDynamic 2 Kursor dinamis, yang memperbolehkan penambahan, penghapusan dan perubahan data record.
adOpenStatic 3 Kursor statis, yang hanya digunakan untuk membaca data. Fungsi lainnya tidak diperbolehkan.
LockType
Tipe proses penguncian data yang akan digunakan pada database.
Konstanta Nilai keterangan
adLockReadOnly 1 Hanya boleh membaca.
adLockPessimistic 2 Proses penguncian data dilakukan pada setiap record. Sehingga setiap perubahan yang dilakukan langsung terekam pada database. Pada mode ini kita bisa menambah, menghapus atau membuat record.
adLockOptimistic 3 Proses penguncian data dilakukan apabila metode Update dipanggil. Pada mode ini kita bisa menambah, menghapus atau membuat record.
Options
Menentukan proses pembacaan source oleh recordset, apakah berupa query SQL atau hanya nama table atau lain sebagainya.
Database Menggunakan ADOCE Halaman 55
Konstanta Nilai Keterangan
adCmdText 1 Menyatakan parameter Source sebagai perintah SQL.
adCmdTable 2 Menyatakan parameter Source sebagai nama table sistem system MsysTables.
adCmdStoredProc 4 Menyatakan parameter Source sebagai sebuah prosedur pada table sistem MsysProcs.
adCmdUnknown 8 Default. Menyatakan parameter Source sebagai nilai yang tidak diketahui jenisnya.
Berikut ini merupakan beberapa metode lainnya yang terdapat pada object recordset : • ADDNEW
Metode ini digunakan untuk menambahkan record baru pada database. B.U :
Recordset.AddNew [Fields], [Values]
Keterangan :
Fields
Nama field tempat data baru tersebut diberlakukan.
Values
Data yang akan ditambahkan.
• CLOSE
Metode ini digunakan untuk menutup recordset yang telah selesai digunakan. B.U :
Recordset.Close
• DELETE
Metode ini digunakan untuk menghapus record pada kursor yang sedang aktif. B.U :
Recordset.Delete
• MOVE
Halaman 56 Database Menggunakan ADOCE
B.U :
Recordset.Move NumRecords, [Starts]
Keterangan :
NumRecords
Jumlah perpindahan record.
Starts
Nilai awal prmberlakuan metode ini. 0 untuk record saat ini, 1 untuk record pertama dan 2 untuk record terakhir.
• MOVEFIRST
Metode ini digunakan untuk memindahkan kursor pada record pertama. B.U :
Recordset.MoveFirst
• MOVELAST
Metode ini digunakan untuk memindahkan kursor pada record terakhir. B.U :
Recordset.MoveLast
• MOVENEXT
Metode ini digunakan untuk memindahkan kursor pada record berikutnya. B.U :
Recordset.MoveNext
• MOVEPREVIOUS
Metode ini digunakan untuk memindahkan kursor pada record sebelumnya. B.U :
Recordset.MovePrevious
• UPDATE
Database Menggunakan ADOCE Halaman 57
B.U :
Recordset.Update [Fields], [Values]
Keterangan :
Fields
Nama field tempat data baru tersebut diberlakukan.
Values
Data yang akan ditambahkan.
Berikut ini merupakan contoh proses pemanggilan data table :
connRecordset.Open App.path & “\tableBaru”
Sedangkan contoh proses pengambilan data table dengan menggunakan perintah SQL adalah sebagai berikut :
connRecordset.Open “SELECT * FROM tableBaru”
Karena parameter ActiveConnection diatas tidak diisi maka metode Open diatas berlaku pada database internal Pocket PC, lain halnya bila ActiveConnection diatas diisikan seperti contoh berikut ini :
connRecordset.Open “SELECT * FROM tableBaru”, “myDatabase.cdb”
Maka perintah SQL tersebut berlaku pada database “myDatabase.cdb”
Sama halnya dengan object Connection, apabila koneksi ke Recordset tersebut telah selesai digunakan, maka sebaiknya koneksi tersebut ditutup dengan menggunakan metode Close.
connRecordset.Close
Set connRecordset = Nothing
5.5. Manipulasi Data
Manipulasi data (kemudian disebut record) yang dimaksud disini adalah termasuk proses pembacaan record, perubahan nilai record, penghapusan atau pembuatan record baru. Sebelum sebuah record dilakukan proses manipulasi, table tempat record tersebut disimpan
Halaman 58 Database Menggunakan ADOCE
harus dibuka terlebih dahulu dengan melakukan proses pemanggilan recordset (recordset query). Proses pemanggilan recordset tersebut dapat dilakukan secara utuh (tanpa dilakukan filtering) maupun dengan proses filtering dengan syarat-syarat sesuai keinginan kita. Karena object recordset diimplementasikan melalui sebuah variabel, maka setelah proses pemanggilan data tersebut dilakukan, data yang berhasil dipanggil akan tersimpan pada variabel object tersebut. Melalui variabel object recordset tersebut juga dapat diimplementasikan metode-metode lain yang memungkinkan dilakukan perubahan nilai, penghapusan atau pembuatan recordset baru.
Untuk sekedar menampilkannya, kita tentunya membutuhkan sebuah control pada Embedded Visual Basic tempat nilai record tersebut akan ditulis. Agar lebih sedap dipandang, kontrol yang biasa digunakan adalah ListBox, ComboBox, ListView atau Grid walaupun tidak menutup kemungkinan record tersebut ditampilkan pada sebuah textBox, Label dan lain sebagainya yang memungkinkan sebuah text ditulis.
Berikut ini merupakan contoh kode program untuk menampilkan record : Kode Program 4.1
1. Dim objRecordset
2. Set objRecordset= CreateObject("ADOCE.Recordset.3.0")
3. objRecordset.Open "dataTeman", App.path & "\BukuTelepon.cdb ", adOpenKeyset, adLockOptimistic
4. If objRecordset.RecordCount > 0 Then
5. Do While Not objRecordset.EOF
6. List1.Additem objRecordset.Fields("nama").Value
7. objRecordset.MoveNext
8. Loop
9. End If
10. objRecordset.Close
11. set objRecordset = Nothing
Pada kode program diatas, file database yang dibuka adalah BukuTelepon.cdb. App.Path pada baris 3 diatas maksudnya adalah bahwa lokasi file BukuTelepon.cdb tersebut berada dalam satu direktori dengan aplikasinya. Setelah field “dataTeman” dibuka (baris 3), program akan mencari apakah jumlah record didalamnya lebih dari nol, artinya apakah ada data, jika ya maka program akan menjalankan perulangan dibawahnya (baris 5-8). Proses perulangan tersebut berisi penulisan record pada field “nama” pada kontrol List1 (ListBox).
Database Menggunakan ADOCE Halaman 59
objRecordset.MoveNext digunakan untk menggerakkan kursor pada posisi berikutnya, sehingga proses looping bekerja dengan normal karena kursor terus bergerak. Perulangan tersebut akan berhenti apabila telah sampai pada akhir record (objRecordset.EOF).
Apabila ingin menggunakan perintah SQL untuk proses pengambilan data yang lebih kompleks, maka kita tinggal merubah nama table “dataTeman” pada objRecordset.Open menjadi perintah SQL tersebut. Contoh :
objRecordset.Open "SELECT * FROM namaTeman WHERE nama LIKE %indra%", App.path & "\BukuTelepon.cdb ", adOpenKeyset, adLockOptimistic
Untuk proses perubahan nilai record, tipe pemanggilan recordset harus diatur sedemikian rupa sehingga kita diberi hak akses untuk melakukan perubahan (tidak hanya baca / read-only). Dengan proses pemanggilan recordset biasa sama seperti diatas, kita kemudian cukup menempatkan kursor pada record yang akan kita rubah dengan menggunakan metode Move. Untuk menentukan lokasi kursor dengan tepat, dapat dilakukan dengan menggunakan perintah SQL atau dengan proses pencarian yang dibuat pada kode program. Apabila lokasi kursornya sudah tepat, proses perubahan nilai cukup dilakukan dengan mengisi masing-masing field tersebut dengan nilai baru. Kemudian, nilai record yang telah diubah tersebut disimpan dengan menggunakan metode Update. Nilai record tersebut akan dirubah dengan cara menindihkan nilai record baru atas record yang lama. Berikut ini merupakan contoh programnya :
Kode Program 4.2
1. Dim objRecordset
2. Set objRecordset = CreateObject("ADOCE.Recordset.3.0")
3. objRecordset.Open "SELECT * FROM dataTeman WHERE id=15", App.Path & “\BukuTelepon.cdb” adOpenDynamic, adLockOptimistic, adCmdUnknown 4. If objRecordset.RecordCount > 0 Then
5. objRecordset.Fields(“nama”) = “Indra Nugraha”
6. objRecordset.Fields(“alamat”) = “Jl. Kelapa Tiga No. 18 Jakarta”
7. objRecordset.Update
8. End If
9. objRecordset.Close
Halaman 60 Database Menggunakan ADOCE
Karena pada proses ini terjadi perubahan data (tidak hanya baca / read-only), maka parameter metode Open pada objRecordset diberi nilai adOpenDynamic, dan adLockOptimistic (baris 3). Proses perubahan data dilakukan dengan cara seperti berikut ini :
objRecordset.Fields(“nama”) = “Indra Nugraha”
objRecordset.Fields(“alamat”) = “Jl. Kelapa Tiga No. 18 Jakarta”
Setelah semua data selesai diubah, jangan lupa disimpan dengan menjalankan metode Update. Pada kondisi diatas, karena proses filtering dilakukan dengan menggunakan perintah SQL, maka kursor-pun akan langsung berada pada posisi sesuai dengan hasil pengembalian perintah SQL yang diberlakukan tersebut. Dalam hal ini kursor akan bergerak pada posisi bila nilai record “id” sama dengan 15.
Proses pemanipulasian data lainnya yang paling sering digunakan adalah, penambahan record. Pada proses penambahan ini digunakan metode AddNew. Dimana, pada metode ini, akan disiapkan sebuah record baru yang kosong pada setiap fieldnya yang siap diisikan nilai. Setelah nilai recordnya diisi jangan lupa juga untuk menyimpannya dengan menggunakan metode Update. Untuk menentukan dimana kita akan menambahkan record baru tersebut, kita juga harus tetap melakukan pemindahan kursor ke tempat yang kita inginkan. Berikut ini merupakan contoh kode programnya :
Kode Program 4.3
1. Dim objRecordset
2. Set objRecordset= CreateObject("ADOCE.Recordset.3.0")
3. objRecordset.Open "SELECT * FROM dataTeman", App.Path & “\BukuTelepon.cdb” adOpenDynamic, adLockOptimistic, adCmdUnknown
4. objRecordset.MoveLast
5. objRecordset.AddNew
6. objRecordset.Fields(“nama”) = “Indri Ramadia”
7. objRecordset.Fields(“alamat”) = “Jl. R.E Martadinata Kuningan”
8. objRecordset.Update
9. End If
10. objRecordset.Close
11. set objRecordset = Nothing
Pada kode program diatas, proses penambahan record baru dilakukan setelah record terakhir, ditandai dengan objRecordset.MoveLast (baris 4). Artinya posisi kursor dipindahkan pada lokasi terakhir, lalu dibuat record kosong baru untuk diisi.
Database Menggunakan ADOCE Halaman 61
Proses manipulasi data terakhir adalah penghapusan recordset. Pada proses penghapusan recordset, cukup dijalankan metode Delete. Metode ini diberlakukan pada lokasi kursor yang sedang aktif, sehingga proses pemindahan lokasi kursor tetap diperlukan untuk menentukan recordset mana yang akan dihapus.
5.6. Menggunakan Perintah SQL
Penggunaan ADOCE versi 3.0 memungkinkan kita untuk menggunakan perintah-perintah Structured Query Languange (SQL) dalam melakukan proses pembuatan, penghapusan atau perubahan data. Pada dasarnya perintah tersebut dibagi menjadi 2, yaitu Data Definition Languange (DDL) dan Data Manipulation Languange (DML). DDL digunakan untuk melakukan proses perubahan struktur database, misalnya membuat table baru, merubah tipe data yang akan digunakan, menghapus table dan sebagainya. Sedangkan DML digunakan untuk melakukan proses atas data record pada table yang diaplikasikan, misalnya membaca, merubah, menghapus, menyusun data dan sebagainya.
Data Manipulation Language Data Definition Language
SELECT – Join ALTER TABLE
SELECT – Like CREATE DATABASE
SELECT - Order By CREATE INDEX
SELECT – Projection CREATE TABLE
SELECT – Restricted DROP DATABASE
SELECT – Simple DROP INDEX
DROP TABLE
Perintah SQL ini digunakan pada metode Open pada kontrol Recordset.
rs.Open pSQL, "", adOpenKeyset, adLockOptimistic, adCmdText
Variabel pSQL diatas merupakan perintah-perintah SQL yang akan diterapkan.
Berikut ini merupakan contoh perintah-perintah SQL yang biasa digunakan beserta keterangannya :
“SELECT * FROM daftarTeman WHERE nama LIKE =’%Indra%’”
Memilih seluruh field dari table “daftarTeman” dimana field “nama” mengandung kata “Indra”.
Halaman 62 Database Menggunakan ADOCE
“SELECT id, nama, alamat, telp FROM daftarTeman WHERE prop =’DKI Jakarta’ AND umur > 22 ORDER BY id ASC”
Memilih field id, nama, alamat dan telp dari table “daftarTeman” dimana nilai field “prop” adalah (tepat) “DKI Jakarta” dan nilai field umur lebih besar dari 22, lalu ditampilkan dengan field “id” disusun berurut naik.
“CREATE TABLE stock (id INT, nama VARCHAR[25], jumlah INT, harga FLOAT)”
Membuat table baru dengan nama “stock”, dimana didalamnya terdapat field “id” bertipe integer, field “nama” bertipe VARCHAR[25] (karakter string dengan lebar 25), field “jumlah” bertipe integer dan field “harga” bertipe float.
“DROP TABLE daftarTeman”
Menghapus table dengan nama “daftarTeman” berikut isinya.
“DELETE daftarTeman WHERE nama=’Indri Ramadia’”
Menghapus record pada table “daftarTeman” dimana pada recordset tersebut field “nama” bernilai (tepat) “Indri Ramadia”.