Jumat, 11 Maret 2011

Koneksi Database Oracle dengan ADO.NET


Dalam kesempatan kali ini saya akan berbagi sedikit ilmu tentang koneksi database sederhana pada Aplikasi berbasis .net framework. Dalam framework .net telah tersedia banyak cara untuk menyambungkan presentation layer dengan data layer, sebagai contoh LinQ , ADO.Net, NHibernate dll, nah untuk beberapa cara yang lain (selain ADO.NET insyaallah akan saya share di posting berikutnya)

 Dalam tutorial kali ini saya akan memakai WPF sebagai presentation layer, apa itu WPF..?? Bisa dicari di pakdhe google atau menunggu postingan saya selanjutnya :D ,



Pertama kita akan mulai dengan membuat aplikasi WPF di VS 2008 seperti gambar dibawah ini :

Kemudian setelah aplikasi terbuat, saya melakukan sedikit cat cit cut , dan berbagai jurus kungfu ( Maaf , untuk pembahasan WPF akan saya posting setelah ini saja, kali ini saya akan fokus ke Data Accessnya saja Ok.. ) yang akhirnya mendapatkan hasil UI seperti dibawah ini :

Nah pasti sudah mengerti kan kegunaan dari 4 tombol tersebut..??? , disini saya akan fokus terhadap 4 query database dasar yaitu operasi2 CRUD, yaitu create , read , update dan delete
Sebelum kita beranjak ke penerapan ADO ada baiknya kita lihat dulu database oracle yang akan kita gunakan, silahkan cekidot digambar dibawah ini gan.

Yuppss, benar sekali gan, dalam database diatas hanya ada satu table yaitu table employee dengan 3 atribut yaitu ID(sebagai PK), NAME, dan AGE....

Langsung saja ke step pertama ,
Yaitu memasti ada tiga library wajib 'ain yang harus dimiliki jika ingin menggunakan jasa dari si ADO, yaitu Sytem.Configuration , System.Data , System.Data.DataSetExtensions
berhubung dalam aplikasi WPF sudah menyertakan System.Data & System.DataSetExtensions kedalam library maka yang harus kita tambah hanyalah System.Configuration ,Yaitu dengan cara mengklik kana folder reference pada project di solution explorer kita dan pilih add refrences dan pilih .NET -> System.Configuration seperti gambar dibawah ini gan


Selanjutnya ke tahap yang paling penting, yaitu membuat class yang bertugas menangani koneksi ke DB dan menangani operasi operasi CRUD , yang saya namakan sebagai DBHelper gan

Nah isi dari kelas tersebut adalah seperti ini gan :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Configuration;

namespace WPF_DB_Connection
{
    public sealed class DBHelper
    {
        private static DbConnection connection;
        private static DbProviderFactory factory;
        
        public static void EstablishConnection()
        {
            factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
            connection = factory.CreateConnection();
            connection.ConnectionString = "Data Source=localhost:1521/xe;User ID=WPF;Password=wpf;Unicode=True";
            connection.Open();
        }
        public static void ReleaseConnection()
        {
            connection.Close();
        }
        public static void AddEmployee(string ID, string name, int age)
        {
            EstablishConnection();
            DbCommand insert = factory.CreateCommand();
            insert.Connection = connection;
            insert.CommandText =
                string.Format("Insert into EMPLOYEE values('{0}','{1}','{2}')",
                ID, name, age);
            DbTransaction tx = connection.BeginTransaction();
            insert.Transaction = tx;
            insert.ExecuteNonQuery();
            tx.Commit();
            ReleaseConnection();
        }
        public static void EditEmployee(string ID, string name, int age)
        {
            EstablishConnection();
            DbCommand edit = factory.CreateCommand();
            edit.Connection = connection;
            edit.CommandText =
                string.Format("update employee set name='{1}', age={2} where employee.id='{0}'",
                ID, name, age);
            DbTransaction tx = connection.BeginTransaction();
            edit.Transaction = tx;
            edit.ExecuteNonQuery();
            tx.Commit();
            ReleaseConnection();
        }
        public static void DeleteEmployee(string ID)
        {
            EstablishConnection();
            DbCommand edit = factory.CreateCommand();
            edit.Connection = connection;
            edit.CommandText =
                string.Format("delete employee where employee.id='{0}'",ID);
            DbTransaction tx = connection.BeginTransaction();
            edit.Transaction = tx;
            edit.ExecuteNonQuery();
            tx.Commit();
            ReleaseConnection();
        }
        public static string GetAllEmployee()
        {
            EstablishConnection();
            DbCommand cmdFrom = factory.CreateCommand();
            cmdFrom.Connection = connection;
            cmdFrom.CommandText = string.Format("Select * from employee");
            DbDataReader reader = cmdFrom.ExecuteReader();
            string output="ID\tNAME\tAGE\n";

            while (reader.Read())
            {
                output+=(string)reader["ID"] + "\t";
                output+=(string)reader["NAME"] + "\t";
                output+=(decimal)reader["AGE"] + "\n";
                Console.WriteLine();
            }
            reader.Close();
            ReleaseConnection();
            return output;
        }
    }
} 

Bagian pertama yang paling penting adalah :

using System.Data.Common;
using System.Configuration;

Kedua using diatas digunakan untuk memanggil library dari ado.net untuk bisa menggunakan servicenya.
Selanjutnya adalah kita harus membuat method untuk membangun koneksi dengan database dan method untuk me release koneksi tersebut seperti dibawah ini gan :

public static void EstablishConnection()
        {
            factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
            connection = factory.CreateConnection();
            connection.ConnectionString = "Data Source=localhost:1521/xe;User ID=WPF;Password=wpf;Unicode=True";
            connection.Open();
        }
        public static void ReleaseConnection()
        {
            connection.Close();
        }
Connection string diatas berguna untuk menyeting source database kita beserta user dan passwordnya, yang kali ini saya menggunakan database lokal, sedangkan factory tersebut adalah jenis service database yang kita gunakan, kali ini saya menggunakan service untuk database oracle.

Oh ya hampir lupa, sebelum membuat method seperti diatas, sebelumnya kita perlu untu membuat 2 buah global variable yang berguna menampung connection string dan factory seperti dibawah ini gan :

private static DbConnection connection;
        private static DbProviderFactory factory;

Method method selanjutnya adalah yang berguna untuk melakukan operasi operasi CRUD, nah yang ini ga perlu ane jelasin satu satu ya gan, udah ngantuk soalnya cukup ane jelasin yang ini saja :
public static void AddEmployee(string ID, string name, int age)
        {
            EstablishConnection();
            DbCommand insert = factory.CreateCommand();
            insert.Connection = connection;
            insert.CommandText =
                string.Format("Insert into EMPLOYEE values('{0}','{1}','{2}')",
                ID, name, age);
            DbTransaction tx = connection.BeginTransaction();
            insert.Transaction = tx;
            insert.ExecuteNonQuery();
            tx.Commit();
            ReleaseConnection();
        }

Method diatas memiliki beberapa bagian, yang pertama adalah establish connection, yaitu membangun koneksi dengan database yang nantinya pada akhir method akan di release, selanjutnya adalah DbCommand adalah salah satu datatype untuk menampung bahasa SQL yang ga jelas itu gan,  nah cara untuk bisa menggunanan datatype DbCommand bisa dilihat sendiri diatas tu gan , kalo udah mudeng ya beres deh semuanya ,,,,   Ntar kalo ada pertanyaan bisa tanya ke ane langsung gan, bisa di ett tuh FB ane, ato melalui Yahoo Ping Box yang sudah ane sediakan juga bisa, nah sampai disini dulu ya,,,, sampai jumpa lagi dilain kesempatan gan,,, Eiiitttssss tunggu dulu ni ane kasih bonus program ane deh silahkan didonlot disini gan...

Sumber : Yohanda's Web Blog

Tidak ada komentar:

Posting Komentar