Mengakses database SQLite menggunakan library dhSQLite
Secara umum aksi yang sering dilakukan dalam pembuatan aplikasi database hanya seputar pernyataan DML (Insert, Update, Delete dan Select), jadi untuk menyederhanakan pembahasan saya pun membatasi artikel kali ini hanya seputar permasalahan tersebut.
Sebenarnya cukup dengan library ADO pun kita sudah bisa mengakses database SQLite, tetapi pada artikel kali ini saya menggunakan library dhSQLite.
Untuk mengakses database SQLite menggunakan dhSQLite kita cukup menggunakan 3 kelas yaitu :
- cConnection, sesuai namanya kelas ini digunakan untuk membuat koneksi ke database
- cRecordset, digunakan untuk menampung pernyataan select
- cCommand, digunakan untuk mengeksekusi pernyataan insert, update dan delete
sedangkan untuk sample database bisa langsung Anda download disini.
1. Membuat koneksi
Tambahkan sebuah modul, kemudian ketik kode berikut :
1
2
3
4
5
6
7
8
9
10
11
| Public Function openDb() As Boolean On Error GoTo errHandle Set conn = New cConnection conn.openDb "C:\dbpos\dbpos.db3" openDb = True Exit Function errHandle: openDb = False End Function |
Untuk mencoba fungsi openDb diatas, kita akan memanfaat prosedur Main berikut :
1
2
3
4
5
6
7
8
9
10
| Public Sub Main() Dim ret As Boolean ret = openDb If ret Then 'TODO : tampilkan form utama Else MsgBox "Koneksi gagal" , vbExclamation, "Peringatan" End If End Sub |
2. Menambahkan data
Menambahkan data menggunakan objek cCommand sangat mudah sekali, lihat kode berikut :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Private Sub cmdSimpan_Click() Dim cmd As cCommand strSql = "INSERT INTO barang (kode_barang, nama_barang, stok, harga_beli, harga_jual) VALUES (?, ?, ?, ?, ?)" Set cmd = conn.CreateCommand(strSql) With cmd .SetText 1, txtKodeBarang.Text .SetText 2, txtNamaBarang.Text .SetDouble 3, Val(txtStok.Text) .SetDouble 4, Val(txtHargaBeli.Text) .SetDouble 5, Val(txtHargaJual.Text) .Execute End With Set cmd = Nothing End Sub |
Angka 1,2 .. 5 merupakan urutkan field pada pernyataan dml, sedangkan method yang dipanggil setelah berhasil menciptakan objek cCommand sesuai dengan tipe data field.
Contoh kode barang bertipe varchar, maka method yang dipanggil adalah SetText, sedangkan stok, harga beli dan harga jual bertipe numeric makanya method SetDouble yang dipanggil dan jika bertipe integer tinggal panggil aja method SetInt32 dan begitu seterusnya.
Oke kita lihat lagi pada pernyataan berikutnya.
3. Mengedit data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Private Sub cmdEdit_Click() Dim cmd As cCommand strSql = "UPDATE barang SET nama_barang = ?, stok = ?, harga_beli = ?, harga_jual = ? " & _ "WHERE kode_barang = ?" Set cmd = conn.CreateCommand(strSql) With cmd .SetText 1, txtNamaBarang.Text .SetDouble 2, Val(txtStok.Text) .SetDouble 3, Val(txtHargaBeli.Text) .SetDouble 4, Val(txtHargaJual.Text) .SetText 5, txtKodeBarang.Text .Execute End With Set cmd = Nothing End Sub |
1
2
3
4
5
6
7
8
9
10
11
| Private Sub cmdHapus_Click() Dim cmd As cCommand strSql = "DELETE FROM barang WHERE kode_barang = ?" Set cmd = conn.CreateCommand(strSql) With cmd .SetText 1, txtKodeBarang.Text .Execute End With Set cmd = Nothing End Sub |
Untuk menampilkan data kita menggunakan pernyataan SELECT, dan ingat pernyataan SELECT mengembalikan data dalam bentuk recordset, sehingga kita harus membuat objek dengan tipe cRecordset.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Private Sub cmdTampilkan_Click() Dim rs As cRecordset strSql = "SELECT kode_barang, nama_barang, stok, harga_beli, harga_jual " & _ "FROM barang " & _ "ORDER BY nama_barang" Set rs = conn.OpenRecordset(strSql, True ) If Not rs.EOF Then Do While Not rs.EOF Debug.Print rs( "kode_barang" ).Value & ", " & rs( "nama_barang" ).Value rs.MoveNext Loop End If End Sub |
Hati-hati jangan langsung mengunakan kode seperti berikut :
1
2
3
4
5
6
7
8
9
10
11
12
13
| Private Sub cmdTest1_Click() Dim cmd As cCommand Dim i As Integer strSql = "INSERT INTO tabel_test (no_urut) VALUES (?)" Set cmd = conn.CreateCommand(strSql) For i = 1 To 1000 cmd.SetInt32 1, i cmd.Execute Next i Set cmd = Nothing End Sub |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Private Sub cmdTest2_Click() Dim cmd As cCommand Dim i As Integer strSql = "INSERT INTO tabel_test (no_urut) VALUES (?)" Set cmd = conn.CreateCommand(strSql) conn.BeginTrans For i = 1 To 1000 cmd.SetInt32 1, i cmd.Execute If i Mod 200 = 0 Then conn.CommitTrans DoEvents conn.BeginTrans End If Next i conn.CommitTrans Set cmd = Nothing End Sub |
Oke terakhir untuk mencoba semua kode diatas, library dhSQLite harus sudah direferensikan di project kita.
Selamat mencoba
http://coding4ever.wordpress.com/2010/07/05/mengakses-database-sqlite-menggunakan-library-dhsqlite/
Tidak ada komentar:
Posting Komentar