Mengakses database SQLite menggunakan library dhSQLite
Ada yang kurang di artikel sebelumnya, yaitu saya belum membahas bagaimana mengakses database SQLite dalam pembuatan aplikasi database.
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 :
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
dengan asumsi database dbpos.db3 sudah ada di folder C:\dbpos.
Untuk mencoba fungsi openDb diatas, kita akan memanfaat prosedur Main berikut :
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
Tentunya agar prosedur Main tersebut bisa dijalankan, kita harus merubah Startup Object menjadi Sub Main.
2. Menambahkan data
Menambahkan data menggunakan objek cCommand sangat mudah sekali, lihat kode berikut :
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
Mirip sekali bukan menambahkan data menggunakan interface PreparedStatement di java
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
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
4. Menghapus data
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
5. Menampilkan data
Untuk menampilkan data kita menggunakan pernyataan SELECT, dan ingat pernyataan SELECT mengembalikan data dalam bentuk recordset, sehingga kita harus membuat objek dengan tipe cRecordset.
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
6. Insert, Update dan Delete dalam jumlah banyak
Hati-hati jangan langsung mengunakan kode seperti berikut :
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
hasil uji coba di laptop saya membutuhkan waktu sekitar 1 menitan, tetapi bandingkan jika menggunakan transaction
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
hanya membutuhkan waktu 1 detik, wowww lumayan bedakan.
Oke terakhir untuk mencoba semua kode diatas, library dhSQLite harus sudah direferensikan di project kita.
Selamat mencoba







hmm…gmna mnambhkan data edit hpus dll….startupobject kan submain…. form na????
Wah si om bercanda kali, masa’ udah bisa buat antivirus tpi belum bisa buat program tambah dan edit ? nentuin startup object dan prosedur Sub Main
wah udah kunjungan ya…..
itu aplikasi lama yang di buka kembali….. taon 2006 dah pensiun dari VB…. skrang bljar lg dr awal…
Oke om yg semangat ya
, kan buku vb dasar banyak
sudah dicoba, tapi gagal terus, knp ya?
pesan error nya :
Run-time error ’91′:
Object variable or With block variable not set
Coba tambahkan deklarasi berikut :
diatas fungsi openDb
hi admin, ada solusi utk pembuatan report vb yg menggunakan sqlite???
saya mencoba gagal terus… >_<"
mohon dibuat tutorialnya
Pertanyaan terlalu global om, gagal apanya? emg apa aja yg udah dicoba. trus reportnya mau ditampilkan kemana?
sebelumnya Terima kasih atas sharing ilmunya
Apa ada bedanya om, perintah insert,update,delete yg langsung di eksekusi dari variabel koneksinya?
contoh:
conn.Execute “insert into tabel_test values(‘a’,'b’,'c’);”
mengenai performance perintah seperti ini apa berpengaruh dibandingkan perintah seperti contoh sebelumnya (PrepareStatement) ???
Klo PrepareStatement ini kan salah satu interface yg ada di java jadi enggak bisa dibandingkan.
Tp klo mengacu artikel ditas (VB+dhSQLite+SQLite) kedua perintah berikut akan memberikan perbedaan yg signifikan.
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 Subprosesnya akan lebih lambat jika menggunakan kode berikut :
Private Sub cmdTest2_Click() Dim i As Integer For i = 1 To 1000 strsql = "INSERT INTO tabel_test (no_urut) VALUES (" & i & ")" conn.execute strsql Next i End SubKode pertama mirip dengan implementasi dari interface PrepareStatement di java.
Ooo gitu ya..
btw thank’s buat pencerahannya.
Oke sama2x
Assalamu Alaikum Wr. Wb.,
Kalo ingin Buat laporan dgn Active Report Caranya bagaimana yah?
Mohon bantuannya
Waalaikumussalam Warahmatullahi Wabarakatuh
Wedewww terlalu panjang om klo di bahas disini, mungkin insya Allah sy buatkan artikel berseri aja tentang masalah ini.
Syukron atas balasan comment nya
Saya tunggu artikelnya, Jangan di Panggil Om akhi
Af1 akhi
Ditunggu aja ya, insya Allah
SQLite juga bisa dipassword sehingga tidak bisa dibuka oleh orang lain karena filenya akan di-encrypt. SQLChiper adalah pengembangan dari SQLite, please check di http://sqlcipher.sf.net
Oke om tq infonya, tapi untuk dapat dllnya harus donasi dulu ya?
Menarik nih sqlite tapi untuk ADO connectionstring kalo mau pake vb6 gimana?
Tolong di email y ke mr_han2x@yahoo.com
Tq
Coba kesini om.
ARTIKEL2 DI BLOG INI MEMANG MANTABS ABIZ
mo nanya nih, gimana ya caranya membuat databse kita include dalam installer aplikasi yang sudah kita buat. jadi saat aplikasi sudah dibuat package installer user tinggal jalanin, next next next finish maka aplikasi plus databasenya siap dijalankan. selama ini saya selalu install databasenya terpisah. mohon pencerahan.
Tq om udah mampir, tp sayang si om enggak memberikan informasi database yg digunakan yg jelas sy sudah pernah ngebahas beberapa artikel tentang pembuat paket instalasi disini
Selamat mencoba
om, kok masih kluar debugnya ya? call modul nya gimana tuh
wah si om pertanyaannya bikin bingung
Mantap sekali tutorialnya om, saya dah coba dan aplkasikan ke program. Lebih simple ketimbang menggunakan odbc. Terima kasih.
Oke om, tq udah mampir
Bang… dari link yg abang kasih di atas saya bingung bang downloadnya dimana… maklum ga ngerti bahasa londo
…
trus saya mau nanya fungsi conn.begintrans, conn.committrans, dan DoEvent pada contoh diatas itu apa ya bang???
Makasih sebelumnya…
Oke om coba link ini, disitu udah disertain juga sample aslinya
Begintrans dan committrans ada hubungannya dg proses transaction klo om nanti dapat matakuliah pemrogramam database lanjut biasa ini dipelajari juga.
Inti proses dalam transaction tu klo sukses harus sukses semua begitu juga sebaliknya, misal om punya beberapa perintah dalam satu prosedur :
1. insert transaksi pembelian
2. update hutang supplier
3. update stok barang
misalkan perintah 1 dan 2 sukses tapi perintah 3 gagal maka perintah 1 dan 2 otomatis dianggap gagal.
Semua tutorial om berbobot banget. Curhat dunk OM… kalau buat installer aplikasi yang DB nya pake SQLite, component nya SQLite apa aja yang disertakan. Jadi nanti waktu install program tidak perlu instal SQLite Expert Personal 3 lagi. Makasih sebelumnya om..
Klo mengacu postingan diatas agar bisa mengakses database SQLite cukup mengikut sertakan file sqlite36_engine.dll dan dhRichClient3.dll pada saat pembuatan paket instalasinya :
[Files] Source: sqlite36_engine.dll; DestDir: {sys}; Flags: uninsneveruninstall sharedfile onlyifdoesntexist Source: dhRichClient3.dll; DestDir: {sys}; Flags: uninsneveruninstall sharedfile regserver onlyifdoesntexistContoh skrip diatas jika menggunakan Inno Setup
Wah… Om nya fast respon nih… !!! Mantaffff… maturtangkyu om. Aku coba dulu.
Oke om kebetulan lagi OL
Om Admin curhat lagi ya.. Sekarang aq agak kesulitan di odbcnya nih.
untuk file2 ODBC yang aq masukan di inno setup seperti ini :
;file hasil instalasi SQLite dan ODBC
Source: “C:\Program Files\SQLite ODBC Driver\sqlite3_mod_blobtoxy.dll;” DestDir: {sys}; Flags: onlyifdoesntexist
Source: “C:\Program Files\SQLite ODBC Driver\sqlite3_mod_extfunc.dll;” DestDir: {sys}; Flags: onlyifdoesntexist
Source: “C:\Program Files\SQLite ODBC Driver\sqlite3_mod_fts3.dll;” DestDir: {sys}; Flags: onlyifdoesntexist
Source: “C:\Program Files\SQLite ODBC Driver\sqlite3_mod_impexp.dll;” DestDir: {sys}; Flags: onlyifdoesntexist
Source: “C:\Program Files\SQLite ODBC Driver\sqlite3_mod_rtree.dll;” DestDir: {sys}; Flags: onlyifdoesntexist
Source: “C:\Program Files\SQLite ODBC Driver\sqlite3odbc.dll”; DestDir: {sys}; Flags: onlyifdoesntexist
Source: “C:\Program Files\SQLite ODBC Driver\sqlite3odbcnw.dll”; DestDir: {sys}; Flags: onlyifdoesntexist
Source: “C:\Program Files\SQLite ODBC Driver\sqliteodbc.dll”; DestDir: {sys}; Flags: onlyifdoesntexist
Source: “C:\Program Files\SQLite ODBC Driver\sqliteodbcu.dll”; DestDir: {sys}; Flags: onlyifdoesntexist
Source: “C:\Program Files\SQLite ODBC Driver\SQLiteODBCInstaller.exe”; DestDir: {sys}; Flags: onlyifdoesntexist
Nah untuk bagian [run] scriptnya gimana om? untuk menjalankan dan mendaftarkan odbc yang saya buat menggunaka SQLite? Trimakasih lagi om…
Tidak perlu semua file DLLnya ikutsertakan, cukup seperti dibawah ini untuk mendaftarkan dan menghapus driver SQLite ODBC cukup seperti ini om :
[Files] Source: "C:\Program Files\SQLite ODBC Driver\sqlite3odbc.dll"; DestDir: {sys}; Flags: onlyifdoesntexist Source: "C:\Program Files\SQLite ODBC Driver\sqliteodbc.dll"; DestDir: {sys}; Flags: onlyifdoesntexist Source: "C:\Program Files\SQLite ODBC Driver\sqliteodbcu.dll"; DestDir: {sys}; Flags: onlyifdoesntexist Source: "C:\Program Files\SQLite ODBC Driver\instq.exe"; DestDir: {sys}; Flags: ignoreversion Source: "C:\Program Files\SQLite ODBC Driver\uninstq.exe"; DestDir: {sys}; Flags: ignoreversion [Run] ;install driver sqliteodbc Filename: "{sys}\instq.exe"; StatusMsg: "Tunggu sedang mendaftarkan driver SQLite"; Flags: runhidden [UninstallRun] ;uninstall driver sqliteodbc Filename: "{sys}\uninstq.exe"; StatusMsg: "Tunggu sedang menghapus driver SQLite"; Flags: runhiddenSelamat mencoba
Om admin, saya sudah coba dengan script di atas, tapi waktu saya coba untuk install hasil program saya ke komputer dan pada saat proses mendaftarkan driver sqlite muncul error :
Copy sqliteodbc.dll to C:\WINDOWS\System32\sqlite3odbc.dll failed
Copy sqliteodbc.dll to C:\WINDOWS\System32\sqliteodbc.dll failed
Copy sqliteodbc.dll to C:\WINDOWS\System32\sqliteodbcu.dll failed
Setelah itu saya cek di system32, ketiga file tersebut dan instq.exe juga sudah tercopy. Kira-kira penyebab errornya karena apa ya om?
Oh ya om 1 lagi, untuk mendaftarkan DSN nya gimana ya?
Trimakasih..
Sorry Om, Pesan Errornya seperti ini :
Copy sqlite3odbc.dll to C:\WINDOWS\System32\sqlite3odbc.dll failed
Copy sqliteodbc.dll to C:\WINDOWS\System32\sqliteodbc.dll failed
Copy sqliteodbcu.dll to C:\WINDOWS\System32\sqliteodbcu.dll failed
Makasih sebelumnya om..
Coba semua nilai DestDir {sys} diatas diganti menjadi {app} om.
Termasuk {sys} yg di section Run dan UninstallRun
Wah…. betul3x om. senangnya hatiku. akhirnya sukses juga. hehehhe… Oh ya om, curhat lagi. Di contoh yang mysql kan ada tuh untuk mendaftarkan DSN :
;install dsn-albasi
Filename: “{sys}\myodbc3i.exe”; Parameters: “-a -su -t”"DSN=dsn-albasi;DRIVER=MySQL ODBC 3.51 Driver;SERVER=127.0.0.1;DATABASE=albasi;UID=root;PWD=masterkey”" -w”; Flags: runhidden; StatusMsg: “Tunggu sedang membuat DSN-ALBASI”
Nah.. kalau di SQLite ada gak om? kalau ada, boleh dunk di share lagi om, heheh
maaf ya om, merepotkan. Untuk kesekian kalinya terimakasih banyak om..
Om untuk mendaftarkan DSN SQLite script inno setup nya sudah sukses saya buat seperti ini
[Registry]
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\ODBC Data Sources”; ValueType: string; ValueName: “SQLiteDSN”; ValueData: “SQLite3 ODBC Driver”; Flags: deletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “Database”; ValueData: {app}\Db\mydb.db3; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “Description”; ValueData: ; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “Driver”; ValueData:{sys}\sqlite3odbc.dll; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “FKSupport”; ValueData: “0″; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “LoadExt”; ValueData: ; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “LongNames”; ValueData: “0″; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “NoCreat”; ValueData: “0″; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “NoTXN”; ValueData: “0″; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “NoWCHAR”; ValueData: “0″; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “OEMCP”; ValueData: “0″; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “ShortNames”; ValueData: “0″; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “StepAPI”; ValueData: “0″; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “SyncPragma”; ValueData: ; Flags: uninsdeletevalue
Root: HKCU; Subkey: “Software\ODBC\ODBC.INI\SQLiteDSN”; ValueType: string; ValueName: “Timeout”; ValueData: ; Flags: uninsdeletevalue
Kira-kira ada yang lebih simple tidak Om?
Trims..
Dibagian section Files tambahkan file adddsn.exe dan remdsn.exe :
[Files] Source: "C:\Program Files\SQLite ODBC Driver\adddsn.exe"; DestDir: {app}; Flags: ignoreversion Source: "C:\Program Files\SQLite ODBC Driver\remdsn.exe"; DestDir: {app}; Flags: ignoreversionkemudian revisi untuk section Run dan UninstallRun :
[Run] ; menambahkan dsn Filename: "{app}\adddsn.exe"; Parameters: """SQLite3 ODBC Driver"" DSN=nama-dsn;Database=c:\db\db_sqlite.db3"; StatusMsg: "Tunggu sedang membuat DSN"; Flags: runhidden [UninstallRun] ; menghapus dsn Filename: "{app}\remdsn.exe"; Parameters: """SQLite3 ODBC Driver"" DSN=nama-dsn"; StatusMsg: "Tunggu sedang menghapus DSN"; Flags: runhiddenSkrip diatas belum sy coba, mudah2xan bisa
Wah.. sip neh om, lebih singkat kalau gini. Makasih banyak ya om, nambah lagi deh ilmunya. ^_^
Sama2x om
Pagi Om…
Mau tanya lagi nih, kalau untuk hapus file setelah proses instalasi gmn ya? saya sudah coba tambahkan script seperti ini :
[InstallDelete]
Type: files; Name: {app}\instq.exe
Type: files; Name: {app}\remdsn.exe
Type: files; Name: {app}\sqlite3odbc.dll
Type: files; Name: {app}\sqliteodbc.dll
Type: files; Name: {app}\sqliteodbcu.dll
Type: files; Name: {app}\adddsn.exe
Type: files; Name: {app}\uninstq.exe
Tapi tidak berhasil juga, file2 tersebut tetap tidak terhapus dari folder hasil installer. Mohon pencerahannya om. Trims…
Salah section om, seharusnya section UninstallDelete
bos kalo nyimpen n nampilin image lewat sqlite giman.. mohon pencerahan..
Kayaxnya sama om dg artikel yg disini.
bukan .mdb ms acces bos, tapi sqlite .db3
Nah itulah om kemudahan akses database menggunakan ADO (ActiveX Data Objects), bisa mengakses database yang berbeda-beda dengan kode yang sama (tentunya dengan sedikit penyesuaian).
Intinya silahkan dicoba dulu, klo ada error baru laporan kesini.
salam kenal mas..
sya lgi belajar VB6 & SQLite
bisa minta tlng contoh aplikasi vb6 + SQLite nya ga?
dri instert, edit, delete, add dsb…dngan menggunakan listview & listbox dll…
terima kasih sblum nya
Wah ini cara belajar memprogram yang jelek om, jangan dipertahankan.
1. Contoh INSERT, UPDATE, DELETE dan SELECT kan sudah ada contohnya diatas.
2. Untuk cara penggunaan ListView bisa dilihat disini.
3. Menampilkan data di ListBox juga gampang
Private Sub Command1_Click() Dim i As Integer For i = 1 To 10 List1.AddItem "Item #" & i Next i End SubHehehe…iya memang buruk cara belajar sya mas….
tpi klau cma lewat source tanpa sampel, paling engga gambar nya gitu..baru saya paham mas
maklum mas…IQ saya rendahan..hehehe
Waduh jangan merendah gitu om, entar diinjak-injak2x loh
Jadi intinya kita jarang sekali mendapatkan contoh kode program yg sesuai dg keinginan, yg penting gimana mempelajari contoh kode yg mirip trus disesuaikan dg kebutuhan.
Sebelumnya tanks for coding4ever
sekedar berbagi source code sqlite :
http://www.4shared.com/file/waj2c2Ys/TEST.html
Tq om sudah berbagi source code
mksh mas…sya ikut belajar jga …
Nah tuh om udah ada yg ngasih contoh.
Happy coding
Terimakasih bnyak buat mas k4m4r82 & mas Mad kartam. skrng sya dah bisa untuk coding nya…walau punya mas Mad.K cuma buat Referensi Tampilan nya. buat mahamin alur nya …
Happy coding
Sama2x om
syeepp.. belajar bersama coding4ever
Permisi mas, mau tanya nih…
ga tau apa nya yg salah….sya msih blum bsa untuk fungsi UPDATE di SQLite nya..
Untuk Fungsi Insert, Delete sdh bisa..
bisa mnta tlong di koreksi dimna nya yg salah..
‘=======================================================================
Listview = lsvProv
CommandButton = cmdUpdate
- Isi Database yg diinput :
Table = Provider
- Isi Field Table Provider :
ID (dg type INTEGER)
Nama (dg type VARCHAR)
Kode (dg type VARCHAR)
Maxdigit (dg type NUMBER)
‘=======================================================================
Private Sub cmdUpdate_Click()
On Error Resume Next
Dim cmd As cCommand
SQL = “UPDATE provider SET Nama = ?, Kode = ?, Maxdigit = ? WHERE ID = ?”
Set cmd = Cnns.CreateCommand(SQL)
With cmd
.SetText 1, txtNSplr.Text
.SetText 2, txtKSplr.Text
.SetText 3, txtDSplr.Text
.SetText 4, lsvProv.SelectedItem.SubItems(1)
.Execute
End With
Set cmd = Nothing
LoadProvider
End Sub
‘=======================================================================
Pada saat memanggil method untuk mengisi parameter dan nilainya harus diperhatikan tipe datanya om. Klo tipenya varchar kan pake SetText tp klo tipenya integer pake SetInt32.
Klo ngeliat kodenya om diatas seharusnya untuk MAXDIGIT dan ID menggunakan SetInt32.
sudah sya ubah seperi ini mas
‘================================================
Private Sub cmdUpdate_Click()
On Error Resume Next
Dim cmd As cCommand
SQL = “UPDATE provider SET Nama = ?, Kode = ?, Maxdigit = ? WHERE ID = ?”
Set cmd = Cnns.CreateCommand(SQL)
With cmd
.SetText 1, txtNSplr.Text
.SetText 2, txtKSplr.Text
.SetInt32 3, txtDSplr.Text
.SetInt32 4, lsvProv.SelectedItem.SubItems(1)
.Execute
End With
Set cmd = Nothing
LoadProvider
End Sub
‘================================================
tapi kok tetep aja yah? database nya ga mau ke update…
@ hidayat : semoga membantu
If LSVPROV.ListItems.Count 0 Then
SQL = “UPDATE provider” _
& ” SET nama=’” & txtNSplr & “‘, ” _
& ” kode=’” & txtKSplr & “‘, ” _
& ” maxdigit =’” & txtDSplr & “‘ ” _
& ” WHERE ID= ‘” & LSVPROV.SelectedItem.SubItems(1) & “‘ ”
Cnns.Execute SQL
LOADDATA
txtNSplr = “”
txtKSplr = “”
txtDSplr = “”
End If
source kode lengkap:
http://dc269.4shared.com/download/I-1r8vdr/PROVIDER.rar?tsid=20111112-070657-dc216c19
maaf mas, tetep ga jdi euy….
mungkin perbedaan nya di tampilan listview mas
data yg di tampilkan di listview nama, kode, maxdigit.
‘================================================
Sub LoadProvider()
On Error Resume Next
Dim t As Object
With lsvProv.ListItems
.Clear
SQL = “SELECT ID, Nama, Kode, Maxdigit FROM provider ORDER BY ID”
Set RS = Cnns.OpenRecordset(SQL)
‘RS.MoveFirst
Do While Not RS.EOF
Set t = lsvProv.ListItems.Add
t.SubItems(1) = RS!Nama
t.SubItems(2) = RS!Kode
t.SubItems(3) = RS!Maxdigit
t.SmallIcon = 1
t.Selected = True
RS.MoveNext
Set t = Nothing
Loop
Set RS = Nothing
End With
ListAutoNumber1
End Sub
‘================================================
dan untuk ID di dlm DB nya sya set Autonumber…
Set t = LSVPROV.ListItems.Add
t.SubItems(1) = RS!id <<<<< ambah ini bro
t.SubItems(2) = RS!Nama
t.SubItems(3) = RS!Kode
t.SubItems(4) = RS!Maxdigit
masalahnya kan updatenya WHERE ID= ‘” & LSVPROV.SelectedItem.SubItems(1) & “‘ ”
id di sub item 1
semangat..
nah itu dia mas..sya ga ingin menampilkan ID nya ke listview
kira2 ada solusi ga yah?
Set t = LSVPROV.ListItems.Add
t.SubItems(1) = RS!id
kan udah menampilkan id,
kalo di sorce kode tadi coloum headernya emang tidak ditampilin,
LSVPROV.ColumnHeaders(2).Width = 1000 < coloum header, index 2 ganti widhtnya..
iya mas, tp memang sngaja sya tdk menampilkan ID nya mas.
untuk Fungsi UPDATE WHERE ID = ? sya ganti dngan dngan data yg di tampilkan WHERE Nama = ? tp knp ga bsa ya?
coba mas hidayat uplod kkodenya, atau pake teamviewer, barangkali bisa membantu
ok sbntar sya upload source nya mas..
ini mas…tlng dikoreksi ya..
http://upload.ugm.ac.id/247testSQLite.rar
Wah sy jadi penonton yg baik aja deh, sing penting akur om
http://www.4shared.com/file/Q_tb3L-p/testSQLite_2.html
hajar bleh..
mr admin ya meneeeng bae…
kalo where jangan pake nama, soalnya kan nama bisa jadi doble, nanti update yang namanya sama, fungsi id kan untuk membedakan record..
rameeee.. ada mr admin
iya mas..mksh sblm nya…tp dsni kan di tampilkan ID nya ke dlm listview.
klau keinginan sya itu tdk menampilkan ID ke dlm listview nya. tp ttep bisa di update. gitu mksd sya mas..bisa ga kra2? atau memang hrus ID di tmpilkan di dlm Listview nya??
mas K4m4r82 bntuin jga donk… ^:)^
lsvProv.ColumnHeaders.Add , , “id”, 500 << ganti 500 ganti jadi 0 tar ga tampil dech..
ga slusi lain yah mas? “hehe bnyakan nawar yah”
bisa aja sich… banyak cara menuju roma, salah satunya pas kamu select dilistview ngambil ID di db where nama dan kode, soalnya kalo cuma nama kan ada data dobel, dtrus taruh di text1 / lbl terserah, trus UPDATE nya where ID = text1
Sy manut dg solusi om mad kartam (susah amat nyebutnya
) dg menambahkan kolom ID n lebarnya diset menjadi 0, kayaxnya itu udah cukup menyelesaikan masalah
Mr admin angkat besi, eh angkat bicara dink.. xixixi
mr admin mesti namanya lebih susah ya nyebutnya makane pake nama admin..
maaf, lupa ngucapin terima ksih..agak sibuk lg ada krjaan tmbahan..hehe
oh ya ada lgi nih yg ingin sya tanyakan
bgmna cra menampilkan data di textbox berdasarkan text di ComboBox yg kta pilih?
misal ComboBox berisi : Kode produk dri database
lalu ingin menampilkan nama supplier nya ke dlm textbox, berdsrkan Kode Produk yg dipilih.
jdi isi di database Kode Produk = KL-112 & KL-113 Nama Supplier = Cemara & Mitra
saat di combobox di pilih yg KL-112 maka yg muncul di TextBox adlah Cemara..
mhon bantuan nya..mksh sblm nya
Struktur lengkap tabelnya gimana om ?
Isi Tabel dalam Database SQLite.db3:
Provider (ID, Nama, Kode, Maxdigit)
Prefix (ID, No_prefix, id_supplier)
pada form terdapat:
1 ComboBox, 2 Textbox
ComboBox menampilkan Provider (kode)
saat isi ComboBox di klik otomatis memunculkan Provider(Nama)
krnglebih begitu mas gambaran nya…
Kayaxnya lebih kurang gini om :
Private Sub Command1_Click() Dim rs As ADODB.Recordset Dim strSql As String strSql = "SELECT nama FROM Provider WHERE id = '" & ComboBox.Text & "'" Set rs = New ADODB.Recordset rs.Open strSql, conn If Not rs.EOF Then TextBox.Text = rs("nama").Value End If rs.Close Set rs = Nothing End Submaaf mas..klau ga slah, bukannya itu untuk database MS Access yah mas?
ini gambaran jelas nya mas..dsitu ada DB nya jga
http://upload.ugm.ac.id/887testSQLite.rar
Sama aja seperti jawaban sy sebelumnya
Private Sub CboKProv_Click() Dim rs As cRecordset SQL = "SELECT nama FROM provider WHERE Kode = '" & CboKProv.Text & "'" Set rs = Cnns.OpenRecordset(SQL, True) If Not rs.EOF Then txtProv.Text = rs("nama").Value End If End Subwah…. capek juga. baca semua comment dari atas sampe bawah… mantap artikelny bos,,, lagi mw blejar sqlite3
Oke om sipp
gmna cara nya update table / Fields di dlm DB SQLite tpi tnpa menghapus isi DB sebelum nya ya? tp tnpa melalui “SQLite Expert Personal”…
mksh sblum nya..
Klo tanpa “SQLite Expert Personal” ya bisa menggunakan tool SQLite atau buat sendiri.
maaf, bisa minta contoh nya mas?
Si om lucu bercanda aja nih
, bukanny postingan sy diatas tu merupakan contoh untuk mengakses SQLite menggunakan visual basic
klau MySql kan bisa menggunakan *.sql dump..nah mksd sya klau SQLite bgmna cra nya update Table / FIleds di dlm dtabase tnpa menghilangkan isi table/Filed yg sebelum nya?..
Sy sendiri belum pernah coba untuk backup dan restorenya tapi tools dan referensinya siap untuk dicoba
bro master, ane ingin buat penambahan stok secara otomatis yg tergantung dari penjualan atau pembelian (jika jual maka stok berkurang, jika beli stok bertambah). Kalo di SQL 2000 ane bisa dengan trigger, kalo di SQLite ane masih bingung dengan sintaxnya, mungkin bro master bisa beri contoh, trims
Ada banyak referensi nih om yg siap untuk dicoba
1. CREATE TRIGGER
2. SQLite / SQL Tutorials
3. SQLite – Triggers
Karena ada kemiripan antara trigger di Firebird dan SQLite jadi sy juga untuk menyarankan untuk mencoba link ini.
Gimana, berani untuk mencoba ?
Bro, thanks ya atas replay tentang trigger di sqlite, nah sekarang ane ada permasalahan lagi nih pada saat membuat setup / instaler agar aplikasi yg ane buat dengan menggunakan database sqlite bisa didistribusikan ke komputer lain. Pada saat ane buat setupnya lalu ingin di instal di komputer lain bisa terinstal tapi pada saat ingin login aplikasi (konek ke database sqlite) ada error tentang file “SQlite.Interop.dll”, mungkin bro master punya pencerahan juga untuk kasus ini, syukur2 ada tutorial bahasa indonesianya, thanks ya bro
kalo yang ngk pake odbc gimana
Ya salah satunya pake library yang sy bahas diatas om, jadi enggak perlu pake acara install driver ODBC segala.
Bro, thanks ya atas replay tentang trigger di sqlite, nah sekarang ane ada permasalahan lagi nih pada saat membuat setup / instaler agar aplikasi yg ane buat dengan menggunakan database sqlite bisa didistribusikan ke komputer lain. Pada saat ane buat setupnya lalu ingin di instal di komputer lain bisa terinstal tapi pada saat ingin login aplikasi (konek ke database sqlite) ada error tentang file “SQlite.Interop.dll”, mungkin bro master punya pencerahan juga untuk kasus ini, syukur2 ada tutorial bahasa indonesianya, thanks ya bro
Mungkin file System.Data.SQLite.dllnya kelupaan, file SQlite.Interop.dll dan System.Data.SQLite.dll harus satu folder pada saat didistribusikan
Sudah mas bro, kedua file tersebut sudah saya letakkan di satu folder yang sama didalam folder project. Yang saya bingung juga file SQlite.Interop.dll tidak bisa ditambahkan sebagai references project, sedangkan file System.Data.SQLite bisa ditambahkan sebagai references Saya menggunakan SQlite untuk project dengan VB.Net 2010.
file SQlite.Interop.dll tidak ter-Deploy (tidak ter-include dalam sama sekali dalam folder setup), sedangkan file System.Data.SQLite ter-Deploy … padahal ane sudah letakkan dalam satu folder yang sama sebelum ane buat setup nya
File SQlite.Interop.dll tidak bisa diadd sebagai reference karna masuk dalam kategori unmanaged dll
Bukannya sudah ada library khusus untuk dot NET misalnya ADO.NET 2.0 Provider for SQLite
Untuk masalah om coba main2x kesini.
trims ya bro, eh ngomong2, suka dengar radio rodja juga ya, ane lagi belajar juga nih, ternyata banyak yg salah ya dengan adat istiadat kita ya yg dianggap sebagai bagian dari agama. Oh iya bro, domisili dimana ? kerja or kuliah ?
kalo ane tinggal di bekasi, masih kuliah, pernah kerja tapi sekarang lagi jadi pengacara
Ya begitulah om
, di masyarakat kita banyak yg enggak care dg agamanya kita tanya saja satu amalan apakah termasuk bagian dari syariat atw bukan pasti kebanyakan dari mereka bingung membedakannya
.
Intinya gini om, di dalam agama kita ada dua hidayah, yg pertama hidyah kepada islam yg otomatis sudah kita dapatkan karena orang tua kita seorang muslim yg kedua hidayah kepada sunnah.
Untuk hidayah yg kedua ini, kita yg harus pro aktif mencarinya dan jika sudah kita dapatkan harus tetap kita pertahankan apapun yg terjadi, wallahualam
(halah pake acara ngasih nasehat lagi
)
Klo sy kebetulan ngajar di salah satu kampus swasta di Yogyakarta
oh ! di jogja toh dab ! ane dulu juga pernah sekolah di Jogja waktu SMP dulu, di Muh Colombo – Demangan. Banyak teman ane disana mas. Ngajar di kampus apa ? kali2 aku main ke Joga lagi, bisa nih copy darat kita, kita tetek – tetek ning angkringan malioboro dab sambil ngoding, hehehe, pokoke jogja is n’the m’best lah, happy coding
Ya boleh lah, klo udah di Jogja komen aja lagi disini
Coding* bareng juga boleh
*Coding = Copy dingin
siipp…
monggo kulo aturi mampir wonten gubuk kawulo…
maturnuwun….
Halah si om malah buka lapak disini, sebulan 100 rb loh om
Kalo mau alter column datatype dan size gimana om? nuhun..
Gini mungkin ya ?
Contoh merubah field nama_barang menjadi 50 di tabel barang
dI nOMOR 6;
“Hati-hati jangan langsung mengunakan kode seperti berikut :
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
”
Mengapa Om?
Makanya dicoba sendiri aja om, hasil pengalaman sendiri kayaxnya lebih baik
Kayaxnya juga udah sy kasih penjelasan kenapa sebaiknya tidak menggunakan cara tersebut