Friday, April 15, 2016

Menghubungkan SQL Server dengan Visual Studio C# Dan Simpan Update Delete (CRUD) di C#

Nah pada kesempatan ini kita akan membahas bagaimana cara koneksi ke database ( SQL SERVER) menggunakan C#. Apa yang harus disiapkan?
1.      SQL Server ( semua versi bisa kyanya)
2.      Visual Studio C#
3.      + database yang dipake ujicoba.

Pertama siapkan dulu database yang digunakan :

Database yang digunakan kali ini kita namakan db_latihan, inget nama databasenya karena akan kita gunakan ketika melakukan koneksi. Langkah kedua adalah membuat tabel yang akan digunakan. 
Pada contoh ini akan dibuat tabel yang paling sederhana, yaitu tabel kategori
Berikutnya adalah merancang tabel kategorinya :

Untuk tabel kategori dicontoh ini membuat 3 buah field yaitu, id_kategori, nama_kategori dan keterangan. Yang perlu diperhatikan adalah id_kategoridimana tipe data yang digunakan adalah INT dan adalah auto increment

Mengapa harus seperti itu??
Karena saya tidak mau repot mengurus ID yang ada didalam tabel kategori, ID Kategori akan dicreate oleh SQL Server karena sudah kita seting auto increment. Jika sudah simpan tabel kategori dengan nama t_kategori.

Karena database dan tabel sudah siap, kita langsung masuk ke Visualnya.


Apa saja langkah-langkah untuk melakukan koneksi ke SQL Server??
  • Buat form dulu
  • Buat class untuk conection string 
  •  Yang terakhir tinggal query aja

Langsung saja, silahkan rancang form sesuai dengan tabel yang kita punya :


Silahkan rancang form sesuai dengan diatas, keterangannya :
  • Untuk Textbox (txtid_kategori , txtNamaKategori, txtKeterangan)
  • Untuk Button (btnNew, btnSimpan, btnHapus, btnKeluar)
  •  Untuk ListView (lvKategori )
Jika form sudah siap lanjut ke codingnya.


Langkah pertama adalah menambahkan class.
Class akan digunakan untuk menyimpan variable global, yaitu conection string.
Conecntion string adalah sebuah variable string yang digunakan untuk melakukan setingan koneksi ke server. Untuk membuat class berikut tahapannya :
Klik kanan pada nama projectnya => Add=> Class


Untuk class diberi nama koneksi.cs

Jika sudah hasilnya seperti berikut :


Tambahkan coding using System.Data.SqlClient; untuk bagian atasnya pada koneksi.cs. Apa gunanya? Untuk koneksi ke SQL Server. Selanjutnya tambahkan coding seperti dibawah ini :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace latihan_dbprogramming
{
    class koneksi
    {
        public System.Data.SqlClient.SqlConnection GetConn()
        {
            System.Data.SqlClient.SqlConnection conn = newSystem.Data.SqlClient.SqlConnection();
conn.ConnectionString = "Data Source= Toufik-PC; Initial Catalog=db_latihan;user=sa; Password=123456";
            return conn;
        }
    }
}

 Yang perlu diperhatikan adalah tulisan berwarna merahnya,
"Data Source= Toufik-PC; yang ini adalah nama server yang digunakan pada SQL SERVER
Initial Catalog= db_latihan; yang ini adalah nama databasenya
user=sa; ini adalah username untuk masuk ke database
Password=123456"; ini adalah passwordnya
Terus gmna kalo gak isi password?? Klo gk isi password dirubah menjadi
conn.ConnectionString = "Data Source= Toufik-PC; Initial Catalog= db_latihan; Integrated Security=True";

Nah itu untuk classnya. Jika sudah kita lanjut ngoding yang lain :D
Kembali ke form, langkah pertama yang harus diatur adalah mengatur property dari textbox yang akan diletakkan di form load.

Tambahkan coding berikut diform load,
private void Form1_Load(object sender, EventArgs e)
        {
            txtid_kategori.Enabled = false;
            txtid_kategori.Text = "OTOMATIS";
        }

Agar ketika load, txtid_kategorinya disable dan berisi tulisan id otomatis.
Karena nanti id nya bakal ke isi sendiri secara otomatis tanpa kita harus insert secara manual lagi.
Langkah selanjutnya adalah menambahlan namescape seperti diclass :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


Kenapa selalu ditambahkan using System.Data.SqlClient karena form ini akan ada koneksi ke database.

Jika sudah, kita harus memanggil conection string dari class yang sudah dibuat tadi, caranya sebagai berikut :
koneksi konn = new koneksi();
       public Form1()
        {
            InitializeComponent();
        }


Tambahkan coding koneksi konn = new koneksi();
Koneksi adalah nama classnya
Konn adalah variable yang digunakan untuk class.
Tahapan selanjutnya adalah membuat method untuk isi dari listviewnya, codingnya sebagai berikut (ingat codingnya taruh didalam classnya):
public void listdata()
        {
            SqlDataReader reader = null;
            lvKategori.Items.Clear();
            lvKategori.Columns.Clear();
            lvKategori.Columns.Add("ID Kategori", 70, HorizontalAlignment.Left);
            lvKategori.Columns.Add("Nama Kategori", 150,HorizontalAlignment.Left);
            lvKategori.Columns.Add("Keterangan", 150, HorizontalAlignment.Left);
            lvKategori.GridLines = true;
            lvKategori.FullRowSelect = true;
            lvKategori.Activation = ItemActivation.TwoClick;
            lvKategori.View = View.Details;
            lvKategori.MultiSelect = false;


            System.Data.SqlClient.SqlConnection conn = konn.GetConn();
            try
            {
                conn.Open();
                string sql = "select * from t_kategori";
                SqlCommand command = new SqlCommand(sql, conn);
                command.ExecuteNonQuery();

                //Cek ada
                reader = command.ExecuteReader();

                while (reader.Read())
                {
ListViewItem item1 = newListViewItem(reader["id_kategori"].ToString(), 0);
                    item1.SubItems.Add(reader["nama_kategori"].ToString());
                    item1.SubItems.Add(reader["keterangan"].ToString());

                    lvKategori.Items.Add(item1);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
            finally
            {
                conn.Close();
            }

Dan jika sudah, panggil method tersebut diform loadnya :
private void Form1_Load(object sender, EventArgs e)
        {
            txtid_kategori.Enabled = false;
            txtid_kategori.Text = "OTOMATIS";
            listdata();
        }

Yang sudah coba jalankan projectnya :

Terlihat sudah ListViewnya sudah terisi.


ListView sudah, sekarang kita ngerjain button Simpannya. Codingnya seperti berikut :
Tahap 1 : atur logikanya jika id=OTOMATIS akan sebagai simpan, jika tidak akan menjadi update. Dan rancang codingnya seperti berikut :

Tahap 2. Cek Validasinya, karena jika tersimpan ke database data tidak boleh ada yang kosong. Dan Codingnya seperti berikut :

Nah itu coding validasinya, bagaimana untuk simpan datanya??

Penjelasan :
System.Data.SqlClient.SqlConnection conn = konn.GetConn();
conn.Open();  ==> ini coding untuk memanggil koneksi dan membuka koneksinya


string sql = "insert into t_kategori values ('" + txtNamaKategori.Text + "','"
                                                        + txtKeterangan.Text +"')";

Coding diatas untuk Query SQLnya, insert ke tabel t_kategori dan datanya diambil dari textbox, kenapa tidak ada ID?? Kan udah dibilang Idnya OTOMATIS :p

SqlCommand command = new SqlCommand(sql, conn);
                    command.ExecuteNonQuery(); ==> yang ini untuk mengeskekusi querynya


conn.Close();  ==> ini untuk nutup koneksi
MessageBox.Show("Data Kategori Sukses Tersimpan"); ==> Nampilin pesan sukses


Kalau sudah, coba jalanin programnya dan coba untuk menyimpan data


Cek validasi dulu :

Jika semua data sudah terisi dan kemudian disimpan maka :

Nah simpan sudah, terus untuk updatenya gmna??
Kita bahas karang untuk updatenya , dan berikut ini coding updatenya :

Penjelasannya sama koq ama insert datanya, bedanya hanya diQuerynya saja, yang warna merah diatas. Nah jika updatenya sudah, sekarang tambahkan coding untuk ListView_MouseDoubleClick.

Carilah property dari lvKategori :
Dobel klik pada event MouseDoubleClick, maka akan masuk ke halaman codenya, dan muncul coding seperti berikut :

private void lvKategori_MouseDoubleClick(object sender, MouseEventArgs e)
        {

        }

Tambahkan coding untuk lvKategori_MouseDoubleClicknya :
private void lvKategori_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            try
            {
             txtid_kategori.Text = lvKategori.SelectedItems[0].Text;
txtNamaKategori.Text =Convert.ToString(this.lvKategori.SelectedItems[0].SubItems[1].Text);
txtKeterangan.Text =Convert.ToString(this.lvKategori.SelectedItems[0].SubItems[2].Text);
            }
            catch
            {
                MessageBox.Show(e.ToString());
            }
        }

Intinya adalah ketika diclick listviewnya, agar datanya mengisi textbox sesuai dengan semestinya. Yang harus diseting adalah
SelectedItems[0].Text
SelectedItems[1].Text
SelectedItems[2].Text
Diatas adalah index dari field dalam database, index ke 0 adalah id_kategori, index ke-1 adalah nama_kategori dan seterusnya. Jika dijalankan hasilnya seperti berikut : 

Sudah bisa ketika click muncul ditextbox?? Jika sudah silahkan rubah datanya, untuk melakukan proses UPDATE.
Misalnya dirubah menjadi :

Dan datanya pun sudah terupdate :

Nah yang terakhir adalah untuk proses Hapus atau DELETE.
Silahkan dobel klik untuk button hapusnya :

private void btnHapus_Click(object sender, EventArgs e)
        {

        }

Sekarang kita akan menambahkan coding untuk button HAPUS, langkah pertama adalah cek apakah ID = OTOMATIS atau TIDAK, jika otomatis munculkan pesan pilih data yang dihapus, jika tidak silahkan dihapus datanya , rancang dlu IF-nya:


ika sudah masuk konsepnya, baru buat query deletenya :

Dan ketika dijalankan :
Jika ID=OTOMATIS, akan muncul validasi pilih data yang akan dihapus

Dan silahkan klik listnya untuk memilih barang yang akan dihapus :

Yup segitu aja dulu postingan tentang cara menghubungkan visual dengan SQL dan simpan update deletenya...
kalo ada yang gak ngerti silahkan bertanya aja di form komentarnya...

Good Luck, Semoga kaga banyak erornya :p

11 komentar:

  1. Apa harus ada konektor untuk menghubungkan antara codingan dengan database nya.?

    ReplyDelete
    Replies
    1. Waduh sorry baru online lagi gan...untuk menghubungnya coding dengan database SQL server gak perlu tambahan connector lagi, karena sudah include di windows ( secara sama2 microfot)

      Delete
  2. The name 'newSystem' does not exist in the current context

    ReplyDelete
  3. Sangat membantu gan, dilanjutkan sharing nya !!!

    ReplyDelete
  4. conn.Open();

    An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

    Additional information: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

    ReplyDelete
  5. koding list viewnya ditaroh dimna?

    ReplyDelete
  6. gan kok pas menghapus/simpan datanya muncul tulisan SqlException was unhandled gan mohon bantuannya gan

    ReplyDelete