Home > Firebird, Visual C# > Database Firebird versi Embedded

Database Firebird versi Embedded

January 9, 2013

Horeee akhirnya bisa nulis lagi dan ini postingan pertama saya di awal tahun 2013 🙂

Beberapa waktu yang lalu saya sering menggunakan database Ms Access untuk pembuatan aplikasi standalone tetapi mengingat beberapa kekurangan yang dimiliki oleh database Ms Access seperti pembengkakan ukuran database yang sangat “mengerikan” 😀 dan terkadang terjadi kerusakan database sehingga memaksa saya untuk mencari alternatif lain yang bisa menggantikan database Ms Access.

Usut punya usut ternyata database favorit saya (Firebird) juga menyediakan library yang memungkinan database Firebrid bisa diperlakukan seperti layaknya database Ms Access (tanpa membutuhkan konfigurasi server sama sekali).

Pada postingan saya kali ini kita akan membahas apa saja yang diperlukan untuk memanfaatkan database Firebird versi Embedded setelah itu akan kita coba mengaksesnya dari bahasa pemrograman C#.

1. Download terlebih dulu library database Firebird versi Embedded

09012013-1

Ekstrak file Firebird-2.5.2.26539-0_Win32_embed.zip kemudian dari file-file yang ada, yang kita butuhkan hanya file fbembed.dll, icudt30.dll, icuin30.dll dan icuuc30.dll.

09012013-3

Semua file diatas harus dicopykan ke folder aplikasi (bin\debug atau bin\release).

2. Download Firebird ADO.NET Data Provider

09012013-2

Pada gambar di atas saya mendownload file NETProvider-3.0.2.0-NET35.7z karena saya menggunakan C# 2008 yang membutuhkan .NET Framework 3.5 kemudian ekstrak file tersebut.

09012013-4

Yang kita butuhkan cukup file FirebirdSql.Data.FirebirdClient.dll

3. String koneksi yang digunakan

String koneksi yang digunakan untuk mengakses database Firebird versi non Embedded adalah seperti berikut :

var strConn = @"User ID=SYSDBA;Password=masterkey;Database=localhost:c:\database\test.fdb";

Sedangkan untuk versi Embeddednya seperti berikut :

var strConn = @"ServerType=1;User=SYSDBA;Password=masterkey;Dialect=3;Database=c:\database\test";

Setelah semua persiapan lengkap saatnya kita menuliskan kode untuk mengakses database Firebird versi Embedded

1. Buat project baru, untuk contoh disini saya menggunakan project dengan tipe Console Application

09012013-5

2. Menambahkan referensi Firebird ADO.NET Data Provider

Untuk mengakses database Firebird kita membutuhkan libaray Firebird ADO.NET Data Provider.

Untuk menambahkan library tersebut kedalam project, caranya cukup mudah hanya dengan mengklik kanan Project -> Add Reference…

09012013-6

Kemudian tentukan lokasi file FirebirdSql.Data.FirebirdClient.dll

09012013-7

Kemudian dilanjutkan dengan melakukan proses Build

09012013-8

Proses ini dibutuhkan untuk menghasilkan folder bin\Debug atau bin\Release

3. Mengcopykan file fbembed.dll, icudt30.dll, icuin30.dll dan icuuc30.dll ke folder bin\Debug atau bin\Release

09012013-9

Setelah itu kita akan coba kode untuk melakukan koneksi ke database dan menampilkan datanya.

namespace AksesFirebirdEmbedded
{
    class Program
    {
        static void Main(string[] args)
        {
            var appPath = System.IO.Directory.GetCurrentDirectory();
            var strConn = "ServerType=1;User=SYSDBA;Password=masterkey;Dialect=3;Database=" + appPath + "\\TEST.FDB";

            using (var conn = new FbConnection(strConn))
            {
                conn.Open();

                var strSql = "SELECT idagama, deskripsi FROM agama";
                using (var cmd = new FbCommand(strSql, conn))
                {
                    using (var dtr = cmd.ExecuteReader())
                    {
                        while (dtr.Read())
                        {
                            Console.WriteLine(dtr.GetString(0) + ", " + dtr.GetString(1));
                        }
                    }
                }
            }

            Console.ReadKey();
        }
    }
}

09012013-10

Selamat MENCOBA 🙂

  1. January 9, 2013 at 11:55 am

    mantep manfaat banget… trims ilmunya. kalo diakses pake vb6 gmana mas

    • January 9, 2013 at 1:37 pm

      Bisa kok om, kalo mengacu postingan sy di atas maka string koneksi yang digunakan di VB 6 seperti berikut :

      strCon = "DRIVER=Firebird/Interbase(r) Driver;UID=SYSDBA;PWD=masterkey;DBNAME=" & App.Path & "\TEST.FDB;Client=" & App.Path & "\fbembed.dll"
      

      Pada string koneksi di atas ada tambahan properties Client yg diarahkan ke file fbembed.dll

      • January 9, 2013 at 3:22 pm

        harus install firebird odbc dulu ya mas?

        • January 9, 2013 at 3:28 pm

          Yuph klo itu wajib

  2. January 9, 2013 at 3:31 pm

    trims, dicoba dulu. di compare dong dengan SQLite apa aja kelebihan dan kekurangan keduanya… 😀

    • January 9, 2013 at 3:52 pm

      Coba kesini om.

      Yg jelas Firebird Embedded mendukung semua fitur Firebird Server

  3. January 10, 2013 at 11:11 am

    assalamualaikum
    mas saya masih belajar vb6 tapi kayanya ini menarik, bisa kiranya di kasih penerapan nya di vb6 mengenai bahasan ini terimakasih

    • January 10, 2013 at 1:13 pm

      Waalaikumussalam

      Loh bukannya om KuntoSA di atas sudah menanyakan penerapannya di VB 6

  4. ridwan
    January 26, 2013 at 2:55 pm

    pak mau tanya, sy mau buat aplikasi buat kantor nah punya 3 cabang nah saya mau buat pake firebird databasenya, nah maunya bos tiap cabang bisa buka data dari mana aja baik dari pusat atau dari cabang yang lain, rencana pertama database pusat di kroyok dari cabang, dan saya tes itu lambat pak karena internet di cabang tidak sebagus di pusat, rencana kedua itu tiap-tiap cabang dan pusat punya db sendiri nah nanti sy akan lakukan syncronize data …. tapi belom tau caranya ini baru konsep hehe… minta bantuannya pak bagusnya gimana ? kalau misal di tiap cabang ada db itu gabunginnya caranya gimana … makasih pak

    • January 27, 2013 at 5:31 pm

      Klo sy lebih memilih solusi yang kedua om yaitu masing2x cabang mempunyai database tersendiri, proses sinkronisasinya setelah kantor tutup aja misal kantor tutup jam 4 baru dilakukan proses sinkronisasi.

      Proses sinkronisasinya juga gampang enggak perlu sampe penggabungan database segala, cukup yg disetor datanya saja.

      Klo teknisnya juga enggak terlalu rumit aplikasinya buka 2 koneksi, satu koneksi ke database lokal yang satunya lagi ke database pusat (dibuka pada saat mau proses sinkronisasi aja).

      Pada saat proses sinkronisasi aplikasi tinggal select data dicabang kemudian insert/update ke database pusat.

      Emang developnya pake bahasa apa om ?
      Trus untuk koneksi pusat dan cabang pake VPN ya ?

  5. ridwan
    January 28, 2013 at 12:22 pm

    Makasih pak, atas solusinya. Kalau bahasa saya pake PowerBuilder hehehe … bahasa clasik tapi asyik. Iya koneksi pake VPN, kita bisnisnya Rental Mobil tapi kita sudah cukup besar kita ada 3 cabang, oya pak di server kebetulan sudah ada database firebird utuk aplikasi keuangan tapi versinya udah lama, nah saya mau pasang lagi datababase firebird yang versi terbaru itu caranya gimana pak ? jadi satu komputer ada 2 service firebird, caranya gimana pak ? mohon pencerahannya
    oya kalau kita backup database firebird tapi hanya beberapa tabel caranya gimana pak ? kan tabel banyak sekali, yang saya mau update tidak semua tabel jadi hanya sebagian saja, mohon pencerahaan sekali lagi…. makasih banyak pak

  6. ridwan
    February 2, 2013 at 2:44 pm

    makasih atas pencerahannya, yang kedua itu kan dalam satu database itu banyak banget tabelnya, nah paling bebrapa master dan transaksi yang mau diambil, jadi backup beberapa tabel di dalam database, soalnya kalau yg script beckup biasa kan backup semua tabel, kan yang di pake gak semua tabel untuk di updatenya, makasih atas pencerahannya.

  7. ridwan
    February 3, 2013 at 3:23 pm

    Makasih pak, sy pelajari dulu

    Admin :
    Coba pake FBExport om.

    • February 3, 2013 at 6:50 pm

      Oke sipp

  8. Abiy
    February 8, 2013 at 9:16 am

    Assalamu’alaikum.
    Pak mo tanya,
    1. Berapa banyak trigger yang bisa dibuat untuk satu table pada firebird?
    2. Beda antara Firebird versi Embedded dengan versi Server apa ya?

    • February 8, 2013 at 9:38 am

      Waalaikumussalam
      1. Emg om mau buat sebanyak apa ? 20 kayaxnya masih bisa :D, dari pengalaman 3 aja udah cukup untuk menghandle semua event (after insert, after update, after delete).
      Walaupun firebird sendiri menyediakan 6 event

      2. Kekurangan dan kelebihan versi Embedded
      o Tidak bisa diakses secara remote (klo utk share folder sy belum sempat coba)
      o Tidak perlu konfirgurasi server
      o Untuk referensi lainnya bisa dicek disini.

      CMIIW

  9. Abiy
    February 8, 2013 at 2:49 pm

    Makasih pak admin, baru belajar bikin trigger pak,.. kalo mysql server saya coba bikin trigger lebih dari satu ga bisa..

    • February 8, 2013 at 2:57 pm

      Iya om salah satu kekurang MySql tidak bisa membuat trigger lebih dari satu untuk event yang SAMA, tapi klo beda event tetap bisa kok om.

      Kekurangan ini tidak kita temui di Firebird

  10. Al Farizi
    March 16, 2013 at 11:20 am

    Muter-muter nyari tutor nemu web bagus tentang firebird … Pak admin saya mau tanya bagaimana caranya membuat backup database secara auto .. jadi gini. Di kantor ada server nah bos maunya kita colokin external hadrisk, nah database firebird bisa backup otomatis ke hardisk external tersebut .. kita maunya harian jadi ya kira-kira jam 6 sore itu otomatis backup sendiri ke hardisk external tersebut, cuma buat jaga-jaga takutnya server hang atau rusak. Nah ada tools atau kita perlu buat aplikasi buat jalaninnya, kalau aplikasi minto tolong bisa intip sourcenya ya heheh, oya pake vb6 saya bisanya
    Makasih sebelumnya pak

  11. May 4, 2013 at 9:27 am

    Om Admin..ada contoh program vb dengan database firebrid yang seperti program sistem informasi sekolah tidak..ingin belajar ..hehehe terima kasih

    • May 4, 2013 at 10:11 am

      Ada tapi versi yg berbayar, tertarik ? 😀

      Klo hanya ingin belajar dari contoh yg disini aja kan bisa.

      Apalagi yg namanya aplikasi database secara umum kan enggak jauh2x dari yg namanya INSERT, UPDATE, DELETE dan SELECT. Semua database mendukung perintah ini jadi enggak ada yg spesial tentang masalah ini.

      • May 4, 2013 at 11:54 am

        Kalau source seperti Smart Librart School dijual tidak om..sama mau nanya cara mengkoneksikan database firebrid dengan file *.ini gimana ya om..menggunakan vb ..hehe lagi semanggat belajar

        • May 4, 2013 at 1:08 pm

          Untuk sementara enggak jualan source code om, enggak tau kedepannya :D.

          Untuk membaca dan menulis file *.INI sudah sy bahas disini.

          Misal kita punya file dengan nama Setting.ini yg tersimpan di folder aplikasi kemudian untuk isinya seperti berikut :

          [Sistem]
          serverName=192.168.1.1
          dbName=D:\Folder Database\NAMA_DATABASE.FDB
          

          Berikut kode untuk melakukan koneksi ke database firebird berdasarkan informasi di atas.

          Public Sub Main()
              Dim dbServer    As String
              Dim dbName      As String
              
              Dim strCon      As String
              Dim fileSetting As String
              
              fileSetting = App.Path & "\Setting.ini"
              
              dbServer = readINI(fileSetting, "Sistem", "serverName", "")
              dbName = readINI(fileSetting, "Sistem", "dbName", "")
              
              ' contoh koneksi menggunakan user dan password default
              strCon = "DRIVER=Firebird/Interbase(r) Driver;UID=SYSDBA;PWD=masterkey;DBNAME=" & serverName & ":" & dbName
              Set conn = New ADODB.Connection
              conn.ConnectionString = strCon
              conn.Open
          End Sub
          

          Untuk fungsi readINI, kode lengkapnya bisa dilihat disini.

  12. May 4, 2013 at 1:14 pm

    Wahh terima kasih sekali Om.admin….keren keren

    • May 5, 2013 at 5:21 am

      Sama-sama om

  13. joksin
    May 10, 2013 at 9:16 am

    Om. Admin gimana caranya koneksi dengan visual studio 2010.yang memakai coding.trims salam kenal Joksin.trims

  14. May 30, 2013 at 2:05 pm

    Om, untuk yang versi embed ini, gimana cara ganti sysdba seperti yang ada di tutorial ini https://coding4ever.wordpress.com/2012/05/19/berlindung-di-belakang-sysdba/ ?
    Trimakasih…

    • June 25, 2013 at 12:27 pm

      Langsung dicoba aja om, lagi males nih 😀

  15. Choirul Akmal
    August 27, 2013 at 8:29 pm

    Om Admin, kalau mau tarik data tabel dari beberapa database kedalam 1 report (fast report) atau flamerobin querynya seperti apa ya. thanks

    • August 28, 2013 at 9:27 am

      Sy belum pernah pake fast report ? Ini utk delphi ya ?

      Yg jelas klo sy ketemu kasus seperti ini, lakukan SELECT dari tabel masing2x database kemudian masing2x hasil SELECTnya disimpan dalam object collection (misal object A dan B) setelah itu object A dan B-nya di merge baru ditampilkan ke laporan.

      • Choirul Akmal
        August 29, 2013 at 9:39 am

        siip Saya paham logikanya,, tapi bisa diberi contoh querynya tidak untuk penyimpanan ke object collection dan merging nya

  16. February 14, 2014 at 10:17 am

    kalau jalan di php bagaimana gan???

  1. No trackbacks yet.
Comments are closed.