Senin, 09 Mei 2011

Melakukan Query dengan VB.net ke SQL Server


ExecuteNonQuery() 
Eksekusi perintah SQL (Query) yang tidak menghasilkan data kembalian. sebenarnya, nilai kembalian dari fungsi ini adalah banyaknya record yang telah di rubah, contoh delete, insert, dan update. 

ExecuteScalar()
Eksekusi perintah SQL (Query) dengan mengambil nilai kembalian dari kolom pertama dan baris pertama, baris & kolom yang lainya tidak akan di ketahui hasilnya. Sehingga fungsi ini sangat cocok untuk melakukan query yang hanya menghasilkan satu nilai kembalian saja, seperti operasi aritmatika dan juga pada saat penghitungan kolom dan juga pengambilan 1 value saja.
Percobaan:
Buat tabel pada database master dengan attribute kolom seperti berikut ini:

 
Simpan tabel dengan nama TblPegawai
Pada program berikut, akan ada beberapa contoh penggunaan ExecuteScalar() dan juga ExecuteNonQuery(), buat project baru ConsolApplication, lalu ketikan kode berikut ini:

Imports System.Data.SqlClient
Module Module1

    Sub Main()
        Dim tabel = "TblPegawai"
        Dim Query As New SqlCommand
        Dim con As New SqlConnection _
        ("Data Source=(local)\sqlexpress; " & _
         "Integrated Security=sspi; Database=master")

        Try 'Membuka koneksi database
            con.Open()
            Console.WriteLine("Koneksi Berhasil.")
            Query.Connection = con
        Catch ex As Exception
            Console.WriteLine("Error Membuka Koneksi:" _
                              & vbNewLine & ex.ToString)
            Console.ReadKey()
            End 'Jika gagal membuka koneksi,
            'program berhenti disini.
        End Try

        'Mengambil jumlah record pada tabel,
        ' menggunakan ExecuteScalar()
        Query.CommandText = "Select count(*) from " & tabel
        Dim JmlhRec = Query.ExecuteScalar
        Console.WriteLine("Jumlah Record: " & JmlhRec)

        'Menambah Record pada tabel, ExecuteNonQuery()
        Query.CommandText = "INSERT INTO " & tabel & _
        " VALUES(1,'slamet','pwt','+6285678263')"
        Console.WriteLine("Lakukan Query: " & Query.CommandText)
        Dim res = Query.ExecuteNonQuery
        Console.WriteLine("Berhasil memodifikasi " & res & " baris.")

        'Ambil jumlah lagi
        Query.CommandText = "Select count(*) from " & tabel
        JmlhRec = Query.ExecuteScalar
        Console.WriteLine("Jumlah Record: " & JmlhRec)

        If con.State <> ConnectionState.Closed Then
            con.Close()
        End If
        Console.ReadKey()
    End Sub

End Module

Program di atas akan melakukan 3 hal yang paling utama, yatu:
  • pertamakali program akan mengeksekusi Query yang menghasilkan jumlah record yang telah ada di dalam tabel dan menyimpan dalam variabel JmlRec, kemudian menampilkannya pada layar.
  •  Kedua, program mengeksekusi query yang berisi memasukan 1 record pada tabel, dan juga menampilkan berapa kolom yang di ubah/ditambah/hapus.
  • Ketiga, program akan menampilkan lagi jumlah keseluruhan record yang ada dalam tabel. Hal ini akan menunjukan apakah benar2 terjadi perubahan pada isi record tabel tersebut atau tidak.
Untuk lebih jelasnya, silahkan jalankan program. Ketika kamu menjalankan program untuk yang pertama kali, kamu akan mendapati hasil seperti ini:
Mula2 record dalam tabel adalah 0, lalu program mengeksekusi query insert dengan ExecuteNonQuery(), lalu isi tabel jadi bertambah satu.


 
Setelah itu, coba jalankan program untuk yang ke dua kalinya.. jika kamu tidak merubah perintah SQL insertnya, maka pasti program kamu akan error, itu karena data yang kamu insertkan telah ada di dalam tabel:
Query.CommandText = "INSERT INTO " & tabel & _
        " VALUES(1,'slamet','pwt','+6285678263')"
sedangkan tabel TblPegawai tidak membolehkan jika terdapat id yang sama, sehingga program kamu jadi error. Dan peng-inputan record ke dalam tabel tidak akan pernah dilakukan. Untuk menanganinya, kamu bisa merubah id yang di insertkan dengan id yang belum ada di dalam tabel, atau, sebelum kamu menjalankan program lagi,  kamu bisa menghapus record yang tadi terlebih dahulu.

Untuk yang ExecuteReader, akan dibahas di POSTING selanjutnya :-)



0 comments:

Klampok Child | XKom | Win7Aero