Home > SQLite, Visual Basic > Mengakses database SQLite menggunakan library dhSQLite

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 :

  1. cConnection, sesuai namanya kelas ini digunakan untuk membuat koneksi ke database
  2. cRecordset, digunakan untuk menampung pernyataan select
  3. 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 :D

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 :)

  1. August 25, 2010 at 5:03 am | #1

    hmm…gmna mnambhkan data edit hpus dll….startupobject kan submain…. form na????

  2. August 25, 2010 at 5:34 am | #2

    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

  3. August 25, 2010 at 6:16 am | #3

    wah udah kunjungan ya….. :) itu aplikasi lama yang di buka kembali….. taon 2006 dah pensiun dari VB…. skrang bljar lg dr awal… :)

    • August 26, 2010 at 2:01 pm | #4

      Oke om yg semangat ya :D , kan buku vb dasar banyak :lol:

  4. August 27, 2010 at 1:20 am | #5

    :) :D

  5. October 3, 2010 at 1:56 am | #6

    sudah dicoba, tapi gagal terus, knp ya?

    pesan error nya :

    Run-time error ’91′:

    Object variable or With block variable not set

    • October 4, 2010 at 1:14 am | #7

      Coba tambahkan deklarasi berikut :

      Public conn As cConnection
      

      diatas fungsi openDb

  6. October 8, 2010 at 2:28 am | #8

    hi admin, ada solusi utk pembuatan report vb yg menggunakan sqlite???

    saya mencoba gagal terus… >_<"

    mohon dibuat tutorialnya :mrgreen:

    • October 8, 2010 at 4:24 am | #9

      Pertanyaan terlalu global om, gagal apanya? emg apa aja yg udah dicoba. trus reportnya mau ditampilkan kemana?

  7. maman
    October 16, 2010 at 4:28 am | #10

    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) ???

  8. October 18, 2010 at 1:40 am | #11

    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 Sub
    

    prosesnya 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 Sub
    

    Kode pertama mirip dengan implementasi dari interface PrepareStatement di java.

  9. maman
    October 18, 2010 at 10:47 pm | #12

    Ooo gitu ya..
    btw thank’s buat pencerahannya.

  10. November 15, 2010 at 5:17 am | #14

    Assalamu Alaikum Wr. Wb.,
    Kalo ingin Buat laporan dgn Active Report Caranya bagaimana yah?
    Mohon bantuannya

    • November 15, 2010 at 5:32 am | #15

      Waalaikumussalam Warahmatullahi Wabarakatuh

      Wedewww terlalu panjang om klo di bahas disini, mungkin insya Allah sy buatkan artikel berseri aja tentang masalah ini.

  11. November 15, 2010 at 6:01 am | #16

    Syukron atas balasan comment nya
    Saya tunggu artikelnya, Jangan di Panggil Om akhi

    • November 16, 2010 at 7:08 am | #17

      Af1 akhi :D
      Ditunggu aja ya, insya Allah :smile:

  12. Ddy
    December 14, 2010 at 9:40 am | #18

    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

    • December 15, 2010 at 1:55 am | #19

      Oke om tq infonya, tapi untuk dapat dllnya harus donasi dulu ya?

  13. Handoko
    January 10, 2011 at 7:59 am | #20

    Menarik nih sqlite tapi untuk ADO connectionstring kalo mau pake vb6 gimana?
    Tolong di email y ke mr_han2x@yahoo.com

    Tq

  14. DnA
    January 22, 2011 at 1:12 am | #22

    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.

    • January 22, 2011 at 4:25 am | #23

      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 :)

  15. aan giri
    February 7, 2011 at 5:29 am | #24

    om, kok masih kluar debugnya ya? call modul nya gimana tuh

    • February 7, 2011 at 6:54 am | #25

      wah si om pertanyaannya bikin bingung :?:

  16. June 24, 2011 at 6:31 am | #26

    Mantap sekali tutorialnya om, saya dah coba dan aplkasikan ke program. Lebih simple ketimbang menggunakan odbc. Terima kasih.

  17. fajrin
    August 6, 2011 at 5:17 pm | #28

    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…

    • August 8, 2011 at 2:24 am | #29

      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.

  18. September 16, 2011 at 1:50 am | #30

    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..

    • September 16, 2011 at 2:00 am | #31

      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 onlyifdoesntexist
      

      Contoh skrip diatas jika menggunakan Inno Setup

  19. September 16, 2011 at 2:19 am | #32

    Wah… Om nya fast respon nih… !!! Mantaffff… maturtangkyu om. Aku coba dulu. :)

  20. September 16, 2011 at 8:41 am | #34

    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…

    • September 16, 2011 at 9:10 am | #35

      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: runhidden
      

      Selamat mencoba :)

  21. September 16, 2011 at 12:27 pm | #36

    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.. :)

  22. September 16, 2011 at 3:55 pm | #37

    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..

    • September 16, 2011 at 4:54 pm | #38

      Coba semua nilai DestDir {sys} diatas diganti menjadi {app} om.

      Termasuk {sys} yg di section Run dan UninstallRun

  23. September 16, 2011 at 6:37 pm | #39

    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 :D maaf ya om, merepotkan. Untuk kesekian kalinya terimakasih banyak om..

  24. September 16, 2011 at 7:42 pm | #40

    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..

    • September 16, 2011 at 10:57 pm | #41

      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: ignoreversion
      

      kemudian 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: runhidden
      

      Skrip diatas belum sy coba, mudah2xan bisa :D

  25. September 17, 2011 at 1:00 am | #42

    Wah.. sip neh om, lebih singkat kalau gini. Makasih banyak ya om, nambah lagi deh ilmunya. ^_^

  26. September 26, 2011 at 12:04 am | #44

    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…

    • September 26, 2011 at 4:21 am | #45

      Salah section om, seharusnya section UninstallDelete

  27. newbie
    November 6, 2011 at 1:16 pm | #46

    bos kalo nyimpen n nampilin image lewat sqlite giman.. mohon pencerahan..

    • November 8, 2011 at 8:38 am | #47

      Kayaxnya sama om dg artikel yg disini.

      • newbie
        November 9, 2011 at 8:10 am | #48

        bukan .mdb ms acces bos, tapi sqlite .db3

        • November 9, 2011 at 8:38 am | #49

          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.

  28. Hidayat
    November 10, 2011 at 5:10 am | #50

    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

    • November 10, 2011 at 9:45 am | #51

      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 Sub
      
      • Hidayat
        November 11, 2011 at 4:12 am | #52

        Hehehe…iya memang buruk cara belajar sya mas….
        tpi klau cma lewat source tanpa sampel, paling engga gambar nya gitu..baru saya paham mas :D
        maklum mas…IQ saya rendahan..hehehe

        • November 11, 2011 at 6:47 am | #53

          Waduh jangan merendah gitu om, entar diinjak-injak2x loh :D
          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.

  29. November 10, 2011 at 6:25 pm | #54

    Sebelumnya tanks for coding4ever
    sekedar berbagi source code sqlite :
    http://www.4shared.com/file/waj2c2Ys/TEST.html

    • November 11, 2011 at 1:36 am | #55

      Tq om sudah berbagi source code :)

    • Hidayat
      November 11, 2011 at 4:14 am | #56

      mksh mas…sya ikut belajar jga …

      • November 11, 2011 at 6:49 am | #57

        Nah tuh om udah ada yg ngasih contoh.

        Happy coding :)

        • Hidayat
          November 11, 2011 at 6:52 am | #58

          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 … :D

          Happy coding

  30. November 11, 2011 at 4:28 pm | #60

    syeepp.. belajar bersama coding4ever

  31. Hidayat
    November 11, 2011 at 7:50 pm | #61

    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
    ‘=======================================================================

    • November 12, 2011 at 2:41 am | #62

      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.

      • Hidayat
        November 12, 2011 at 5:57 am | #63

        Admin :
        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…

  32. November 12, 2011 at 7:08 am | #64

    @ 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

    • Hidayat
      November 12, 2011 at 8:07 am | #65

      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…

  33. November 12, 2011 at 9:28 am | #66

    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..

  34. Hidayat
    November 12, 2011 at 9:38 am | #67

    mad kartam :
    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?

    • November 12, 2011 at 9:49 am | #68

      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..

      • Hidayat
        November 12, 2011 at 9:57 am | #69

        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?

  35. November 12, 2011 at 10:04 am | #70

    coba mas hidayat uplod kkodenya, atau pake teamviewer, barangkali bisa membantu

    • Hidayat
      November 12, 2011 at 10:08 am | #71

      ok sbntar sya upload source nya mas..

  36. Hidayat
    November 12, 2011 at 10:24 am | #72

    mad kartam :
    coba mas hidayat uplod kkodenya, atau pake teamviewer, barangkali bisa membantu

    ini mas…tlng dikoreksi ya..
    http://upload.ugm.ac.id/247testSQLite.rar

  37. November 12, 2011 at 11:16 am | #73

    Wah sy jadi penonton yg baik aja deh, sing penting akur om :)

  38. November 12, 2011 at 11:33 am | #74
  39. November 12, 2011 at 11:40 am | #75

    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

    • Hidayat
      November 12, 2011 at 11:59 am | #76

      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… ^:)^ :D :D

  40. November 12, 2011 at 12:04 pm | #77

    lsvProv.ColumnHeaders.Add , , “id”, 500 << ganti 500 ganti jadi 0 tar ga tampil dech..

  41. Hidayat
    November 12, 2011 at 12:14 pm | #78

    mad kartam :
    lsvProv.ColumnHeaders.Add , , “id”, 500 << ganti 500 ganti jadi 0 tar ga tampil dech..

    ga slusi lain yah mas? “hehe bnyakan nawar yah”

    • November 12, 2011 at 12:24 pm | #79

      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

  42. November 12, 2011 at 12:35 pm | #80

    Sy manut dg solusi om mad kartam (susah amat nyebutnya :D ) dg menambahkan kolom ID n lebarnya diset menjadi 0, kayaxnya itu udah cukup menyelesaikan masalah :)

  43. November 12, 2011 at 12:45 pm | #81

    Mr admin angkat besi, eh angkat bicara dink.. xixixi
    mr admin mesti namanya lebih susah ya nyebutnya makane pake nama admin..

    • Hidayat
      November 13, 2011 at 7:03 pm | #82

      maaf, lupa ngucapin terima ksih..agak sibuk lg ada krjaan tmbahan..hehe :D
      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

      • November 15, 2011 at 12:31 pm | #83

        Struktur lengkap tabelnya gimana om ?

        • Hidayat
          November 15, 2011 at 12:42 pm | #84

          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…

          • November 15, 2011 at 1:01 pm | #85

            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 Sub
            
            • Hidayat
              November 15, 2011 at 4:15 pm | #86

              maaf 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

              • November 18, 2011 at 6:16 am | #87

                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 Sub
                
  44. November 18, 2011 at 4:54 am | #88

    wah…. capek juga. baca semua comment dari atas sampe bawah… mantap artikelny bos,,, lagi mw blejar sqlite3

  45. November 18, 2011 at 6:16 am | #89

    Oke om sipp

  46. December 30, 2011 at 6:52 pm | #90

    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.. :D

    • January 3, 2012 at 1:14 pm | #91

      Klo tanpa “SQLite Expert Personal” ya bisa menggunakan tool SQLite atau buat sendiri.

      • Hidayat
        January 3, 2012 at 1:19 pm | #92

        maaf, bisa minta contoh nya mas?

        • January 3, 2012 at 1:23 pm | #93

          Si om lucu bercanda aja nih :D , bukanny postingan sy diatas tu merupakan contoh untuk mengakses SQLite menggunakan visual basic

          • Hidayat
            January 3, 2012 at 1:27 pm | #94

            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?..

  47. bramantyo
    March 7, 2012 at 11:59 am | #96

    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

    • March 9, 2012 at 3:55 pm | #97

      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 ? :)

      • bramantyo
        April 15, 2012 at 1:55 am | #98

        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

  48. dhan
    April 8, 2012 at 7:26 pm | #99

    kalo yang ngk pake odbc gimana

    • April 9, 2012 at 4:10 pm | #100

      Ya salah satunya pake library yang sy bahas diatas om, jadi enggak perlu pake acara install driver ODBC segala.

  49. bramantyo
    April 15, 2012 at 1:48 am | #101

    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

    • April 15, 2012 at 6:12 am | #102

      Mungkin file System.Data.SQLite.dllnya kelupaan, file SQlite.Interop.dll dan System.Data.SQLite.dll harus satu folder pada saat didistribusikan

      • bramantyo
        April 15, 2012 at 8:14 am | #103

        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.

        • bramantyo
          April 15, 2012 at 8:32 am | #104

          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

        • April 15, 2012 at 8:48 am | #105

          File SQlite.Interop.dll tidak bisa diadd sebagai reference karna masuk dalam kategori unmanaged dll

          • April 15, 2012 at 8:51 am | #106

            Bukannya sudah ada library khusus untuk dot NET misalnya ADO.NET 2.0 Provider for SQLite

            Untuk masalah om coba main2x kesini.

            • bramantyo
              April 15, 2012 at 10:51 am | #107

              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

              • April 15, 2012 at 11:30 am | #108

                Ya begitulah om :D , 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 :D .

                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 :D )

                Klo sy kebetulan ngajar di salah satu kampus swasta di Yogyakarta :D

                • bramantyo
                  April 15, 2012 at 11:45 am | #109

                  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

                  • April 15, 2012 at 1:44 pm | #110

                    Ya boleh lah, klo udah di Jogja komen aja lagi disini :D

                    Coding* bareng juga boleh :D

                    *Coding = Copy dingin :D

  50. April 21, 2012 at 12:23 am | #111

    siipp…
    monggo kulo aturi mampir wonten gubuk kawulo… :)
    maturnuwun….

  51. April 22, 2012 at 6:37 am | #112

    Halah si om malah buka lapak disini, sebulan 100 rb loh om :D

  52. ruben
    April 27, 2012 at 6:59 am | #113

    Kalo mau alter column datatype dan size gimana om? nuhun..

    • April 27, 2012 at 10:02 am | #114

      Gini mungkin ya ? :D

      Contoh merubah field nama_barang menjadi 50 di tabel barang

      ALTER TABLE barang ALTER COLUMN nama_barang VARCHAR(50)
      
  53. ruben
    April 27, 2012 at 7:55 am | #115

    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?

    • April 27, 2012 at 10:03 am | #116

      Makanya dicoba sendiri aja om, hasil pengalaman sendiri kayaxnya lebih baik :D

      Kayaxnya juga udah sy kasih penjelasan kenapa sebaiknya tidak menggunakan cara tersebut

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s