Anda di halaman 1dari 12

Akses Database Dengan ADO.NET Pada Aplikasi .

NET

Artikel ini telah dipublikasikan pada majalah Mikrodata Vol. 7 Series 17, July 2002. Agus Kurniawan agusk@cs.ui.ac.id http://blog.aguskurniawan.net

Pendahluan
Akses database merupakan suatu kebutuhan seorang programmer dalam menyelesaikan suatu masalah yang berhubungan dengan data. Seorang developer juga dituntut untuk dapat memilih suatu cara atau metode dalam penanganan data. Salah satu metode untuk mengakses database yaitu melalui ADO.NET, ini digunakan pada aplikasi berbasis framework .NET baik untuk aplikasi web maupun aplikasi desktop. Di bagian artikel ini juga akan dijelaskan bagaimana mengakses data dari SQL Server 2000. Semua aplikasi ini menggunakan Visual C# yang merupakan bagian Visual Studio.NET atau Visual Studio versi 7.0

Komponen ADO.NET
Sebelum kita membahas mengenai pemrograman database dengan ADO.NET sebaiknya kita mengenal komponen-komponen dalam ADO.NET. Komponen ADO.NET itu sendiri terdiri dari beberapa object antara lain: 1. SqlConnection 2. SqlCommand 3. SqlDataAdapter 4. OleDbConnection 5. OleDbCommand 6. OleDbAdapter 7. DataView 8. DataSet

1|Halaman

Gambar 1. Icon Object ADO.NET Bentuk icon object ADO.NET dapat dilihat pada gambar 1. Pada artikel kali ini hanya akan membahas object SqlConnection, SqlCommand dan SqlDataAdapter.

Persiapan Database Pada SQL Server 2000


Dengan menggunakan SQL Server 2000, kita membuat tabel sederhana. Mulamula kita harus membuat database dengan menggunakan SQL Server Interprise Manager dengan cara klik kanan pada folder Database seperti pada gambar 2. Kita isi nama database yaitu PersonalData yang diperlihatkan pada gambar 3 dan kemudian klik tombol OK.

Gambar 2. New database dengan cara klik kanan.

2|Halaman

Gambar 3. Setting database baru. Untuk membuat tabel database-nya dengan SQL Server 2000, cukup dengan klik kanan pada database yang telah kita buat (PersonalData) yang terlihat pada gambar 4 dan selanjutnya akan tampil seperti pada gambar 5,

Gambar 4. Membuat tabel baru pada database PersonalData

3|Halaman

Gambar 5. Setting tabel Nama Field Propertie Data Type : int Primary Key Identity : Yes Identity Seed : 1 Identity Increment : 1 Allow Nulls : No Data Type : char (30) Allow Nulls : No Data Type : char (80) Allow Nulls : No Data Type : char (30) Allow Nulls : No Data Type : char (30) Allow Nulls : No Data Type : image Allow Nulls : Yess Data Type : int 4|Halaman

IDNumber

Nama Alamat Kota Email Foto FotoSize

Allow Nulls : Yes Kemudian simpan tabel dengan nama PersonalTabel (gambar 6) dan klik tombol OK.

Gambar 6. Simpan tabel

Merancang Aplikasi
Pada sub bagian ini, kita akan membuat aplikasi dekstop untuk memanipulasi data melalui ADO.NET. Beberapa feature dalam aplikasi adalah: Menampilkan semua data Menambah data Mengedit data Menghapus data Model arsitektur software yang akan dibuat seperti yang diperlihatkan pada gambar 7

Gambar 7. Model diagram kelas yang akan diimplementasikan ke aplikasi 5|Halaman

Dari gambar 7 terlihat bahwa ada dua kelas yang masing-masing inheritance dari kelas Form serta masing-masing kelas juga mempunyai model UI sendiri-sendiri. Untuk UI dari kelas MainForm dapat dilihat pada gambar 8 dan UI untuk kelas ShowForm pada gambar 9

Gambar 8. Bentuk UI untuk kelas MainForm

6|Halaman

Gambar 9. Bentuk UI untuk kelas ShowForm

Proses Koneksi Dengan Database SQL Server


Untuk melakukan koneksi dengan SQL Server maka kita memanfaatkan kelas SqlConnection sedangkan untuk manipulasi query SQL dapat menggunakan kelas SqlCommand. Berikut ini initialisasi koneksi dengan SQL Server :
String strConnection; SqlConnecion sqlConnection1; strConnection = "user id = sa;" + // user id pada SQL Server "password = agusk;"+ // password pada SQL Server "data source = akurniawan;" + // nama SQL Server "initial catalog = PersonalData;" + "connect timeout = 30;"; sqlConnection1 = new SqlConnection(strConnection); SqlConnection1.Open(); // membuka koneksi dengan SQL Server

7|Halaman

Menampilkan Data Dari Database SQL Server


Pada aplikasi telah terhubung dengan SQL Server maka kita dapat melakukan manipulasi data dengan query SQL yaitu memanfaatkan kelas SqlCommand. Setelah dieksekusi query SQL tersebut, data hasil query akan ditampung dalam data variabel bertipe kelas SqlDataReader. Berikut ini cara menampilkan data:
string query = "select * from TPersonal"; try { sqlCommand1 = new SqlCommand(query,sqlConnection1); sqlConnection1.Open(); SqlDataReader data = sqlCommand1.ExecuteReader(); total = data.FieldCount; Keterangan.Text = "Total Data : " + total.ToString(); Keterangan.Visible = true; setKolom(); ListViewItem lvItem = new ListViewItem(); while(data.Read()) { lvItem = DataListView.Items.Add( data.GetValue(0).ToString()); lvItem.SubItems.Add( data.GetValue(1).ToString() ); lvItem.SubItems.Add( data.GetValue(4).ToString() ); } data.Close(); sqlConnection1.Close(); } catch(SqlException err) { MessageBox.Show(err.Message,"Database Error", MessageBoxButtons.OK,MessageBoxIcon.Error); if( sqlConnection1.State ==ConnectionState.Connecting || sqlConnection1.State ==ConnectionState.Executing || sqlConnection1.State ==ConnectionState.Fetching || sqlConnection1.State ==ConnectionState.Open ) sqlConnection1.Close(); }

Data Bertipe Image


Jika data field pada database SQL Server berupa image atau dengan kata lain berupa binary maka proses manipulasi datanya berbeda yang tipe data yang lain. Pada data yang bertipe image proses mengambil data harus berupa tipe byte yang kemudian ditampung dalam memory stream. Berikut ini mengambil data image:
byte[] img = new byte[data.GetInt32(6)]; data.GetBytes(5,0,img,0,data.GetInt32(6)); MemoryStream stream = new MemoryStream(img,true);

8|Halaman

stream.Write(img,0,img.Length); Gambar(new Bitmap(stream));

Setelah data image sudah ada di memory, maka kita menampilkannya dengan menggunakan komponen PictureBox, di source code diatas dibuat dengan fungsi Gambar(), berikut ini codenya:
private void Gambar(Image img) { Rectangle rc = FotoPersonal.ClientRectangle; SizeF size = new SizeF( img.Width / img.HorizontalResolution, img.Height / img.VerticalResolution); float fScale = Math.Min( rc.Width / size.Width, rc.Height / size.Height); size.Width *= fScale; size.Height *= fScale; FotoPersonal.Image = new Bitmap(img, size.ToSize()); }

Menambah Data
Proses penambahan data dengan memanfaatkan kelas SqlDataAdapter dengan mengunakan query SQL. Dari kelas SqlDataAdapter didapatkan data bertipe DataSet dan ditambahkan baris baru ke dalam DataSet tersebut. Berikut ini cara menambah data:

string query = "select * from TPersonal"; try { SqlDataAdapter ad = new SqlDataAdapter(query,sqlConnection1); sqlConnection1.Open(); DataSet ds = new DataSet(); ad.Fill(ds,"TPersonal"); DataTable dbTable = ds.Tables["TPersonal"]; DataRow dbRow = dbTable.NewRow(); dbRow["Nama"] = Nama.Text; dbRow["Alamat"] = Alamat.Text; dbRow["Kota"] = Kota.Text; dbRow["Email"] = Email.Text;

9|Halaman

Untuk data bertipe image:


BinaryReader bin = new BinaryReader(GbrStream); dbRow["Foto"] = bin.ReadBytes((int)GbrStream.Length); dbRow["FotoSize"] = GbrStream.Length; bin.Close();

Setelah data baru ditulis di DataSet, langkah selanjutnya melakukan update data ke SQL Server. Berikut ini caranya:
dbTable.Rows.Add(dbRow); SqlCommandBuilder cb = new SqlCommandBuilder(ad); ad.Update(ds, "TPersonal"); sqlConnection1.Close();

Mengedit Data
Metode yang dipakai dalam mengedit data agak sedikit berbeda apalagi untuk data yang bertipe image. Disini kita dapat memanfaatkan kelas SqlDataAdapter, initialisasinya sebagai berikut:
string query = "select * from TPersonal where IDNumber=" + idNumber; SqlDataAdapter ad = new SqlDataAdapter(query,sqlConnection1); sqlConnection1.Open();

Setelah terhubung koneksi maka SqlDataAdapter akan menghasilkan DataSet serta mengedit data tersebut berdasarkan inputan (dalam hal ini berupa EditBox)
DataSet ds = new DataSet(); ad.Fill(ds,"TPersonal"); DataTable dbTable = ds.Tables["TPersonal"] ; DataRow dbRow = dbTable.Rows[0]; dbRow.BeginEdit(); dbRow["Nama"] = Nama.Text; dbRow["Alamat"] = Alamat.Text; dbRow["Kota"] = Kota.Text; dbRow["Email"] = Email.Text;

Untuk update data tipe image: 10 | H a l a m a n

BinaryReader bin = new BinaryReader(GbrStream); dbRow["Foto"] = bin.ReadBytes((int)GbrStream.Length); dbRow["FotoSize"] = GbrStream.Length; bin.Close();

Setelah data disetting di DataSet maka proses update nya ke database SQL Server sebagai berikut:
SqlCommandBuilder cb = new SqlCommandBuilder(ad); ad.UpdateCommand = cb.GetUpdateCommand(); ad.Update(ds, "TPersonal"); ds.AcceptChanges(); sqlConnection1.Close();

Menghapus Data
Proses penghapusan data cukup dengan memanfaatkan query SQL yaitu DELETE. Oleh karena itu kita dapat menggunakan kelas SqlCommand. Berikut code bagaimana menghapus data:
string query = "Delete from TPersonal where IDNumber=" + Convert.ToInt32(IDnum); try { sqlCommand1 = new SqlCommand(query,sqlConnection1); sqlConnection1.Open(); sqlCommand1.ExecuteNonQuery(); sqlConnection1.Close(); DisplayData(); } catch(SqlException err) { MessageBox.Show(err.Message,"Database Error", MessageBoxButtons.OK,MessageBoxIcon.Error); if( sqlConnection1.State ==ConnectionState.Connecting || sqlConnection1.State ==ConnectionState.Executing || sqlConnection1.State ==ConnectionState.Fetching || sqlConnection1.State ==ConnectionState.Open ) sqlConnection1.Close(); }

11 | H a l a m a n

Source Code
Source code dari artikel ini sudah ada. Sebelum melakukan running aplikasi harus disetting database dan baca file readme.txt. Disamping itu, anda dapat memperlancarkan pemrograman C# anda dalam mailing list C# Indonesia. Disana kita dapat belajar bersama. Alamat URLnya : http://groups.yahoo.com/group/csharp_indo atau kirim email kosong ke csharp_indo-subscribe@yahoogroups.com

Referensi
1. MSDN .NET library 2. SQL Server Online Book

12 | H a l a m a n

Anda mungkin juga menyukai