5
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 masingmasing 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 Halaman 48
Database Menggunakan ADOCE
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.
Gambar 5.1 Tampilan References Window
Database Menggunakan ADOCE
Halaman 49
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 Text Memo LongInt Byte Int Single Double Halaman 50
ODBC sql_varchar sql_longvarchar sql_integer sql_bigint sql_tinyint sql_smallint sql_real sql_double
CDB Varchar Text Integer Integer Smallint Smallint Double Double Database Menggunakan ADOCE
ReplID Date/Time Currency AutoNumber YesNo OleObject HyperLink Lookup
sql_float sql_varbinary sql_timestamp sql_numeric sql_integer sql_bit sql_longvarbinary sql_longvarchar sql_varchar
Double Varbinary Datetime Double Integer Boolean Varbinary Text 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). UserID Database Menggunakan ADOCE
Halaman 51
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 =;"
Halaman 52
Database Menggunakan ADOCE
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]
Database Menggunakan ADOCE
Halaman 53
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 adOpenForwardOnly
Nilai 0
adOpenKeyset
1
adOpenDynamic
2
adOpenStatic
3
Keterangan Hanya memperbolehkan proses pembacaan data record dengan pergerakan kursor maju. Hanya memperbolehkan proses pembacaan data record dengan arah pergerakan kursor yang tidak bisa ditentukan oleh kita. Kursor dinamis, yang memperbolehkan penambahan, penghapusan dan perubahan data record. Kursor statis, yang hanya digunakan untuk membaca data. Fungsi lainnya tidak diperbolehkan.
LockType Tipe proses penguncian data yang akan digunakan pada database. Konstanta adLockReadOnly adLockPessimistic
Nilai 1 2
adLockOptimistic
3
keterangan Hanya boleh membaca. 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. 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.
Halaman 54
Database Menggunakan ADOCE
Konstanta adCmdText
Nilai 1
adCmdTable
2
adCmdStoredProc
4
adCmdUnknown
8
Keterangan Menyatakan parameter Source sebagai perintah SQL. Menyatakan parameter Source sebagai nama table sistem system MsysTables. Menyatakan parameter Source sebagai sebuah prosedur pada table sistem MsysProcs. 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 Metode ini digunakan untuk menambahkan record baru pada database.
Database Menggunakan ADOCE
Halaman 55
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 Metode ini digunakan untuk menyimpan proses perubahan record pada database.
Halaman 56
Database Menggunakan ADOCE
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 Database Menggunakan ADOCE
Halaman 57
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). Halaman 58
Database Menggunakan ADOCE
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 %indra%",
"SELECT
App.path
*
&
FROM
namaTeman
"\BukuTelepon.cdb
WHERE ",
nama
LIKE
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
10.
set objRecordset = Nothing
Database Menggunakan ADOCE
Halaman 59
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. Halaman 60
Database Menggunakan ADOCE
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 perintahperintah 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 SELECT – Join SELECT – Like SELECT - Order By SELECT – Projection SELECT – Restricted SELECT – Simple
Data Definition Language ALTER TABLE CREATE DATABASE CREATE INDEX CREATE TABLE DROP DATABASE 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”.
Database Menggunakan ADOCE
Halaman 61
“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”.
Halaman 62
Database Menggunakan ADOCE