Tuesday, December 13, 2016

Bab 2: Pemrograman C#.NET: Database dan Web




Database



2.1 Menciptakan Database Pada Visual Studio
KONSEP: Aplikasi .NET menggunakan sejumlah komponen, yang ditata dalam tingkat-tingkat, untuk terhubung ke suatu database. Visual Studio menyediakan sejumlah perangkat yang dapat Anda pakai untuk menciptakan database dan untuk mengkonfigurasi sejumlah komponen yang diperlukan aplikasi untuk terhubung ke database.

Menghubungkan Aplikasi Ke Database
Aplikasi .NET memerlukan sejumlah komponen yang dapat dipakai untuk menghubungkannya dengan dan memanipulasi suatu database. Komponen-komponen tersebut ditempatkan pada lapisan-lapisan seperti ditunjukkan pada Gambar 2.1.


Gambar 2.1 Komponen-komponen yang digunakan oleh suatu aplikasi untuk terhubung ke sebuah database

Berikut adalah simpulan dari lapisan-lapisan yang ditunjukkan pada gambar tersebut:
·         Data Source: Seperti diimplikasikan dari namanya, ia merupakan sebuah sumber data yang dapat dipakai oleh aplikasi. Sumber data biasanya adalah database, tetapi ia bisa pula berupa spreadsheet Excel, data XML, file teks, atau layanan Web.
·         Table Adapter: Table adapter menghubungkan sumber data dan membaca data dari suatu tabel di dalam sumber data. Table adapter juga dapat memperbarui tabel di dalam sumber data.
·    Dataset: Ia menyalin suatu tabel dari table adapter dan menempatkan salinan tabel tersebut di dalam memori. Daripada bekerja langsung dengan database, aplikasi bekerja dengan dataset, memodifikasi baris, menghapus baris, menambahkan baris baru, dan lainnya. Kemudian, dataset dapat menginstruksikan table adapter untuk menulis perubahan yang ada ke dalam database.
·    Binding Source: Ia merupakan sebuah komponen yang dapat menghubungkan kontrol-kontrol pada antarmuka use secara langsung ke suatu dataset.

Visual Studio menyediakan sejumlah wizard yang mempermudah dalam menciptakan dan mengkonfigurasi komponen-komponen yang diperlukan. Pada Tutorial 2.1, Anda akan membuat sebuah projek C# baru dan menggunakan Visual Studio untuk melakukan hal-hal berikut:
·         Menciptakan sebuah database SQL Server
·         Merancang suatu tabel di dalam database.
·         Menambahkan data ke dalam tabel



Tutorial 2.1: Mengawali Aplikasi Buku Telepon dan Menciptakan Database Telepon.mdf
Pada dua tutorial ke depan, Anda menciptakan sebuah aplikasi yang menggunakan suatu database untuk menyimpan sejumlah nama dan nomor telepon. Pada tutorial ini, Anda akan mengawali aplikasi dengan menciptakan database. Pada tutorial berikutnya, Anda akan menghubungkan aplikasi dengan database, menambahkan suatu dataset, dan menambahkan sebuah kontrol pada form yang dapat dipakai user untuk berinteraksi dengan database.

Langkah 1: Awali Visual Studio. Ciptakan sebuah projek Windows Forms Application dengan nama Buku Telepon.

Gambar 2.2 Jendela Add New Item


Langkah 2: Ubah properti Text dari Form1 menjadi Buku Telepon.

Langkah 3: Selanjutnya, Anda menciptakan sebuah database baru dan menambahkannya pada projek. Klik PROJECT pada batang menu dan kemudian pilih Add New Item….

Langkah 4: Jendela Add New Item akan ditampilkan. Gulung ke bawah dan pilih Service-based Database, seperti ditunjukkan pada Gambar 2.2. Anda juga perlu menetapkan nama database pada kotak teks Name di bawah jendela. Nama default, seperti Database1.mdf, akan ditampilkan di situ. Ubah nama tersebut menjadi DaftarTelepon.mdf. (Pastikan untuk tetap mempertahankan ekstensi file .mdf).

Langkah 6: Klik tombol Add pada jendela Add New Item. Ini akan menambahkan sebuah database SQL Server kosong dengan nama DaftarTelepon.mdf pada projek Anda.

Langkah 7: Jendela Data Source Configuration Wizard, seperti ditunjukkan pada Gambar 2.3, akan ditampilkan. Klik tombol Cancel. (Anda membatalkan proses pada titik ini karena database yang telah Anda ciptakan sekarang masih kosong. Anda tidak dapat mengkonfigurasi suatu sumber data sampai Anda menciptakan suatu tabel di dalamnya).


Gambar 2.3 Menklik Cancel pada jendela Data Source Configuration Wizard


Langkah 7: Lihat pada jendela Solution Explorer, seperti ditunjukkan pada Gambar 2.4, dan perhatikan bahwa ia sekarang memuat suatu entri untuk database DaftarTelepon.mdf. Klik ganda pada entri tersebut. Perhatikan bahwa sebuah jendela baru dengan nama Server Explorer sekarang dibuka pada area di mana Toolbox ditempatkan. (Jendela tersebut diberi nama Server Explorer pada Visual Studio. Jika Anda menggunakan Visual Studio Express, jendela itu diberi nama Database Explorer). Jendela Server Explorer ditampilkan pada Gambar 2.5.

Gambar 2.4 Entri database DaftarTelepon.mdf pada jendela Solution Explorer


Gambar 2.5 Jendela Server Explorer

Langkah 8: Sekarang Anda menambahkan sebuah tabel ke dalam database DaftarTelepon.mdf. Pada jendela Server Explorer (atau Database Explorer), pastikan bahwa entri DaftarTelepon.mdf diekspansi, seperti ditunjukkan pada Gambar 2.5. Klik kanan pada Tables, dan seperti ditunjukkan pada Gambar 2.6, klik Add New Table pada menu yang ditampilkan.

Gambar 2.6 Menambahkan sebuah tabel ke dalam database DaftarTelepon.mdf


Ini akan menampilkan Table Designer, seperti ditunjukkan pada Gambar 2.7. Anda menggunakan Table Designer untuk menetapkan nama-nama dan tipe data dari tiap kolom tabel.

Gambar 2.7 Jendela Table Designer

Langkah 9: Amati Table Designer dan perhatikan bahwa suatu kolom dengan nama Id secara otomatis ditambahkan pada tabel. Gambar 2.8 menunjukkan bagaimana membaca informasi tentang kolom pada Table Designer:
·         Ikon kunci ( ) yang ditampilkan di sisi kiri dari nama mengindikasikan bahwa kolom tersebut adalah kunci primer dari tabel.
·         Nama dari kolom adalah Id.
·         Tipe data kolom adalah int.
·         Kotak periksa Allow Nulls tidak dicentang. Ini berarti bahwa kolom tersebut harus memiliki sebuah nilai (tidak bisa null).

Anda akan mempertahankan kolom ini, tetapi Anda akan melakukan sedikit perubahan. Pada langkah selanjutnya, Anda akan mengubah nama kolom menjadi IDOrang, dan Anda akan membuatnya sebagai kolom identitas (sehingga database akan secara otomatis membangkitkan nilai-nilai integer unik untuknya).

Gambar 2.8 Kolom Id yang secara otomatis ditambahkan pada tabel

Langkah 10: Klik pada kolom Name (Id) pada Table Designer, dan ubah namanya menjadi IDOrang. Tekan kunci Tab. Tabel Designer sekarang akan ditampilkan seperti pada Gambar 2.9.

Gambar 2.9 Nama kolom diubah menjadi IDOrang


Gambar 2.10 Properti Identify Specification dari kolom IDOrang ditampilkan

Langkah 11: Dengan kolom masih diseleksi, perhatikan bahwa jendela Properties menampilkan properti-properti dari kolom. Gulung ke bawah sampai Anda melihat Identity Spesification. Klik ganda pada Identity Spesification, dan Anda akan melihat properti (Is Identity), Identity Increment, dan Identitity Seed di bawahnya, seperti ditunjukkan pada Gambar 2.10.

Langkah 12: Ubah properti (Is Identity) menjadi True. Ini akan menandari kolom IDOrang sebagai sebuah kolom identitas. Perhatikan bahwa properti Identity Increment dan Identity Seed keduanya sekarang ditetapkan menjadi 1, seperti ditunjukkan pada Gambar 2.14.

Gambar 2.11 Properti Identity Specification ditetapkan menjadi nilai yang diinginkan

Langkah 13: Pada Table Designer, tambahkan kolom lain dengan nama Nama. Pilih nvarchar(50) sebagai tipe datanya dan hapus centang pada Allow Nulls.

Langkah 14: Tambahkan kolom lain dengan nama Telepon. Pilih nvarchar(50) sebagai tipe datanya dan hapus centang pada Allow Nulls. Table Designer akan ditampilkan seperti pada Gambar 2.12.

Gambar 2.12 Kolom IDOrang, Nama, dan Telepon yang diciptakan pada Table Designer

Langkah 15: Anda selesai dalam merancang tabel, tetapi Anda masih perlu mengubah nama tabel. Ketika Anda menciptakan sebuah tabel baru pada jendela Server Explorer, ia diberi nama default, dengan nama Table. Perhatikan di bawah jendela Table Designer, Anda dapat melihat area dengan label T-SQL. Seperti ditunjukkan pada Gambar 2.13, statemen pertama pada jendela ini menunjukkan nama tabel. Ubah statemen pertama tersebut sehingga dibaca berikut:

CREATE TABLE [dbo].[Orang]

Jendela T-SQL sekarang ditampilkan seperti pada Gambar 2.14.


Gambar 2.13 Jendela T-SQL



Gambar 2.14 Nama tabel diubah menjadi Orang

Gambar 16: Meskipun Anda telah mengubah nama tabel pada jendela T-SQL, perubahan tersebut tidak akan terjadi sampai Anda memperbarui database. Klik pada tombol Update yang ada di pojok kiri atas dari Table Designer, seperti ditunjukkan pada Gambar 2.15.


Gambar 2.15 Tombol Update untuk memperbarui database

Langkah 17: Jendela Preview Database Updates, seperti ditunjukkan pada Gambar 2.16, akan ditampilkan. Klik pada tombol Update Database. Tunggu sebentar sampai Anda melihat konfirmasi bahwa pembaruan telah berhasil dilakukan, seperti ditunjukkan pada Gambar 2.20. Tutup jendela Table Designer.

Langkah 18: Langkah selanjutnya adalah memasukkan data ke dalam tabel. Pada Server Explorer (atau Database Explorer), ekspansi entri Tables dan kemudian klik kanan pada entri Orang. Anda akan melihat menu seperti ditunjukkan pada Gambar 2.18. Klik Show Table Data pada menu.


Gambar 2.16 Jendela Preview Database Updates


Gambar 2.17 Konfirmasi bahwa database telah diperbarui


Gambar 2.18 Mengklik item menu Show Table Data


Langkah 19: Tabel sekarang akan terbuka dan siap untuk menerima masukan, seperti ditunjukkan pada Gambar 2.19. Masukkan beberapa nama dan nomor telepon ke dalam kolom Nama dan kolom Telepon. Ketika Anda memasukkan data, ingat beberapa hal berikut:
·         Jangan masukkan nilai-nilai untuk kolom IDOrang. Sistem akan secara otomatis membangkitkan sebuah nilai untuk kolom IDOrang setiap kali Anda menambahkan sebuah baris baru.
·         Anda harus memasukkan nilai-nilai untuk kolom Nama dan kolom Telepon. Ingat bahwa Anda menghapus centang dari Allow Nulls untuk kedua kolom ini ketika Anda merancang tabel. Jika Anda pindah ke baris lain tanpa menetapkan nilai-nilai untuk kolom-kolom ini, Anda akan menerima pesan error.
·         Tanda seru akan ditempatkan di samping kolom ketika Anda memasukkan data. Ini hanya berarti bahwa data belum disimpan ke dalam database. Ketika Anda pindah dari baris tertentu, data akan disimpan dan tanda seru tersebut akan menghilang.

Gambar 2.19 Anda siap untuk memasukkan data ke dalam tabel Orang


Gambar 2.20 menunjukkan tabel dengan sejumlah data telah dimasukkan.


Langkah 20: Setelah Anda memasukkan semua data, klik FILE pada menu Visual Studio dan kemudian klik Save All. Baris-baris data akan disimpan ke dalam database DaftarTelepon.mdf.

Gambar 2.20 Contoh data yang dimasukkan ke dalam tabel Orang


Langkah 21: Tutup tabel sehingga form Form1 ditampilkan pada jendela Designer. Ingat kembali apa yang telah Anda lakukan sejauh ini:
·         Anda telah menciptakan sebuah database SQL Server dengan nama DaftarTelepon.mdf.
·         Anda telah menciptakan sebuah tabel dengan nama Orang.
·         Anda telah memasukkan sejumlah data ke dalam tabel Orang.

Pada tutorial selanjutnya, Anda akan menghubungkan database DaftarTelepon.mdf ke form aplikasi dan menambahkan sebuah kontrol pada form sehingga user dapat berinteraksi dengan database.

Lokasi File Database
Ketika Anda menggunakan Visual Studio untuk menciptakan sebuah database, seperti yang telah Anda lakukan pada Tutorial 2.1, file database akan diciptakan pada folder projek. Sebagai contoh, Gambar 2.21 menunjukkan bagaimana file database DaftarTelepon.mdf diciptakan pada folder projek aplikasi Buku Telepon.

PERHATIKAN: Ketika Anda menciptakan sebuah database SQL Server, Anda juga akan melihat sebuah file yang diakhiri dengan ekstensi .LDF. Sebagai contoh, seperti pada Gambar 2.21, Anda akan melihat sebuah file dengan nama DaftarTelepon_log.LDF. SQL Server DBMS akan menggunakannya untuk menyimpan semua catatan operasi yang Anda lakukan pada database.


Gambar 2.21 Lokasi dari file database DaftarTelepon.mdf



2.2 Kontrol DataGridView
KONSEP: Kontrol DataGridView dapat menampilkan sebuah tabel database.
Kontrol datab-bound adalah sebuah kontrol antarmuka user yang terhubung ke suatu sumber data. Sebagai contoh, sebuah kontrol data-bound dapat dihubungkan ke sebuah kolom pada suatu tabel database. Kontrol data-bound secara otomatis menampilkan data dari sumber data dan dapat dipakai untuk mengubah data. Salah satu kontrol yang paling sederhana adalah kontrol DataGridView. Kontrol ini dapat menampilkan isi tabel di dalam database yang ditempatkan pada suatu form.

Pada Tutorial 2.2, Anda akan melanjutkan aplikasi Buku Telepon yang telah Anda mulai pada Tutorial 2.1. Anda menghubungkan form aplikasi ke database DaftarTelepon.mdf dan menambahkan sebuah kontrol DataGridView yang dapat dipakai untuk melihat dan memperbarui tabel Orang.

Tutorial 2.2: Menyempurnakana Aplikasi Buku Telepon
Pada tutorial ini, Anda menyempurnakan aplikasi Buku Telepon. Anda menambahkan database DaftarTelepon.mdf pada projek sebagai sebuah sumber data, menciptakan sebuah dataset yang terhubung ke tabel Orang, dan menambahkan sebuah kontrol DataGridView sehingga user dapat berinteraksi dengan database.
Langkah 1: Pastikan projek Buku Telepon terbuka pada Visual Studio (atau Visual Studio Express).

Langkah 2: Klik PROJECT pada menu Visual Studio dan kemudian klik Add New Data Source…. Anda akan melihat jendela Data Source Configuration Wizard, seperti ditunjukkan pada Gambar 2.22.

Langkah 3: Sumber data yang Anda tambahkan adalah sebuah database, jadi Anda perlu memastikan bahwa Database diseleksi dan kemudian klik Next >. Jendela sekarang ditampilkan, seperti ditunjukkan pada Gambar 2.23.

Langkah 4: Pastikan bahwa Dataset diseleksi, dan klik Next>. Jendela sekarang ditampilkan, seperti ditunjukkan pada Gambar 2.24.

Gambar 2.22 Jendela Data Source Configuration Wizard: Choose a Data Source Type


Gambar 2.23 Jendela Data Source Configuration Wizard: Choose a Database Model


Gambar 2.24 Jendela Data Source Configuration Wizard: Choose Your Data Connection


Langkah 5: Pada jendela ini, Anda akan diminta untuk memilih sebuah koneksi data, dan database DaftarTelepon.mdf secara otomatis diseleksi, seperti ditunjukkan pada Gambar 2.24. Klik tombol Next>. Jendela sekarang ditampilkan seperti pada Gambar 2.25.

Gambar 2.25 Jendela Data Source Configuration Wizard: Save the Connection String


Langkah 6: Pada jendela ini, Anda akan diminta apakah Anda ingin menyimpan sebuah string koneksi. Biarkan centang pada kotak periksa Yes dan klik tombol Next>.

Langkah 7: Pada jendela yang ditampilkan sekarang, Anda akan diminta untuk memilih objek-objek database yang ingin Anda cantumkan di dalam dataset. Ekspansi entri Tables, dan tempatkan centang di samping Orang, seperti ditunjukkan pada Gambar 2.26.

Gambar 2.26 Jendela Data Source Configuration Wizard: Choose Your Database Objects


Di bawah jendela, Anda dapat menetapkan nama untuk dataset. Nama defaultnya adalah DaftarTeleponDataSet yang telah disediakan. Karena Anda menyeleksi tabel Orang sebagai objek database, ubah nama dataset menjadi OrangDataSet. Klik tombol Finish. Berikut adalah simpulan dari apa yang telah Anda lakukan:
·        Anda telah menambahkan database DaftarTelepon.mdf sebagai suatu sumber data pada aplikasi.
·       Anda telah menciptakan sebuah komponen dataset yang dihubungkan ke tabel Orang. Nama dari komponen dataset tersebut adalah OrangDataSet.

Langkah 8: Visual Studio menyediakan sebuah jendela Data Source yang dapat Anda pakai untuk melihat semua sumber data di dalam projek. Klik menu VIEW pada batang menu Visual Studio, kemudian pilih Other Windows, kemudian klik Data Sources. Jendela Data Sources akan ditampilkan, seperti ditunjukkan pada Gambar 2.27. Perhatikan bahwa jendela tersebut menunjukkan nama dari dataset, yaitu OrangDataSet, dan nama tabel yang terkoneksi dengan dataset (tabel Orang).

Gambar 2.27 Jendela Data Sources


Langkah 9: Selanjutnya, Anda memilih DataGridView sebagai kontrol data-bound default untuk tabel Orang. Pada jendela Data Sources, klik entri untuk tabel Orang, seperti ditunjukkan di sisi kiri pada Gambar 2.28. Kemudian, klik anak panah ke bawah dan pilih DataGridView, seperti ditunjukkan di sisi kanan pada Gambar 2.28.

Gambar 2.28 Memilih kontrol DataGridView sebagai kontrol data-bound untuk tabel Orang


Langkah 10: Sekarang Anda menambahkan kontrol DataGridView pada form. Seperti ditunjukkan pada Gambar 2.29, klik dan geret tabel Orang dari jendela Data Sources ke dalam form.

Seperti ditunjukkan pada Gambar 2.30, ini akan menciptakan sebuah kontrol DataGridView dan sebuah batang navigasi pada form. (Jika diperlukan, perbaiki ukuran form dan ukuran dan posisi dari kontrol DataGridView sehingga ditampilkan seperti pada Gambar 2.30). Perhatikan bahwa component tray di bawah form sekarang memuat beberapa item. Item-item tersebut adalah komponen-komponen yang secara otomatis diciptakan ketika Anda menempatkan kontrol DataGridView pada form. Berikut adalah simpulan dari komponen-komponen tersebut:
·   orangTableAdapter: Ini adalah sebuah table adapter. Ia membaca data secara langsung dari sumber data, pada kasus ini adalah tabel Orang dari database DaftarTelepon.mdf.
·    tableAdapterManager: Pada banyak aplikasi, database memiliki beberapa tabel. Sebuah table adapter manager adalah komponen yang mengelola tabel-tabel tersebut.
·      orangDataSet: Ini adalah komponen dataset. Ia mendapatkan salinan tabel dari table adapter dan menempatkannya ke dalam memori. Aplikasi akan bekerja dengan dataset, bukan bekerja secara langsung pada database.
·         orangBindingSource: Ini adalah batang navigasi.

Gambar 2.29 Menggeret tabel Orang ke dalam form


Gambar 2.30 Kontrol DataGridView yang ditempatkan pada form


Langkah 11: Simpan dan jalankan aplikasi. Form akan ditampilkan seperti ditunjukkan pada Gambar 2.31, dengan baris-baris dari tabel Orang ditampilkan pada kontrol DataGridView. Anda dapat menggunakan kontrol DataGridView dengan cara-cara berikut:
·   Untuk mengubah nilai sel, klik sel tersebut dengan mouse dan kemudian ubah datanya jika diperlukan.
·        Untuk memilih sebuah baris, klik tombol yang ada di sampingnya.
·    Untuk menghapus sebuah baris, pilih baris tersebut; kemudian klik tombol Delete pada batang navigasi atau telah kunci Delete pada keyboard.
·        Untuk menambahkan sebuah baris bari, gulung grid ke bawah, dimana Anda akan melihat sebuah baris kosong. Masukkan data baru pada baris kosong tersebut.
·         Perubahan-perubahan yang Anda lakukan hanya berpengaruh pada salinan tabel di dalam memori yang ditampung di dalam dataset. Untuk menyimpan perubahan ke dalam database, klik tombol Save pada batang navigasi.
·         Untuk mengurutkan baris-baris pada sebuah kolom, klik kepala kolom.


Gambar 2.31 Aplikasi Buku Telepon sedang dijalankan


Langkah 12: Gunakan kontrol DataGridView untuk membuat beberapa perubahan pada dataset. Sebagai contoh, ubah sebuah nilai pada suatu baris, tambahkan sebuah baris baru, dan hapus baris. Pastikan untuk mengklik tombol Save pada batang navigasi untuk menyimpan perubahan Anda.

Langkah 13: Tutup aplikasi dan kemudian jalankan kembali aplikasi untuk memverifikasi bahwa perubahan telah disimpan. Ketika selesai, tutup aplikasi.

Kode Oto-Generasi
Ketika Anda menempatkan sebuah kontrol data-bound, seperti DataGridView, pada sebuah form, Visual Studio melakukan banyak hal di balik layar untuk membuat kontrol itu berfungsi. Pada dasarnya, Anda telah menyelesaikan aplikasi pada Tutorial 2.2 tanpa menuliskan sebaris kodepun. Jika Anda membuka editor kode, Anda akan melihat bahwa Visual Studio telah membangkitkan sejumlah kode, yang ditunjukkan pada Gambar 2.1.

Program 2.1 Kode Form1 pada aplikasi Buku Telepon
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Buku_Telepon
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void orangBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.orangBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.orangDataSet);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into …
            this.orangTableAdapter.Fill(this.orangDataSet.Orang);

        }
    }
}

Visual Studio menambahkan sebuah event handler pada baris 20-26 yang dieksekusi ketika user mengklik tombo Save pada batang navigasi. Statemen-statemen di dalam metode ini menerapkan setiap perubahan yang dilakukan pada kontrol DataGridView pada dataset dan kemudian menyimpan dataset tersebut ke dalam database.

Visual Studio juga menambahkan sebuah event handler Load untuk form, pada baris 28-33. Pada baris 31, event handler ini memanggil metode Fill dari table adapter, melewatkan sebuah referensi yang menunjuk ke tabel Orang (yang dimuat di dalam dataset) sebagai argumen. Statemen ini menyebabkan table adapter memuat data dari database ke dalam dataset.



2.3 Membuat Hubungan Ke Database Yang Telah Ada dan Menggunakan Kontrol Details View
KONSEP: Anda dapat dengan mudah menghubungkan suatu aplikasi dengan sebuah database yang telah ada. Kontrol Details merupakan cara alternatif pada kontrol DataGridView untuk berinteraksi dengan sebuah database.

Pada Tutorial 2.1, Anda telah menggunakan Visual Studio untuk menciptakan sebuah database dari nol dan mengisi tabel dengan data tertentu. Seringkali ditemukan bahwa programer harus menciptakan aplikasi yang terhubung ke database yang telah ada. Pada Tutorial 2.3, Anda menciptakan sebuah aplikasi dan menghubungkannya ke suatu database yang telah ada. Database itu memiliki nama ProdukDB.mdf, dan Anda akan menemukannya di dalam folder Database di dalam CD. Database tersebut hanya memuat satu tabel, dengan nama Produk. Gambar 2.32 menunjukkan data yang disimpan di dalam tabel Produk.

Gambar 2.32 Tabel Produk di dalam database ProdukDB.mdf


Berikut adalah beberapa hal yang perlu Anda ketahui tentang kolom-kolom pada tabel Produk:
·   Kolom Nomor_Produk adalah kunci primer. Tipe datanya adalah nchar(5), dan null tidak diperbolehkan.
·         Tipe data dari kolom Deskripsi adalah nvarchar(50), dan null tidak diperbolehkan.
·         Tipe data dari kolom Unit_Tersedia adalah int, dan null tidak diperbolehkan.
·         Tipe data dari kolom Harga adalah int, dan null tidak diperbolehkan.

Pada tutorial ini, Anda juga akan belajar bagaimana menciptakan sebuah Details view, yang merupakan sejumlah kontrol yang terikat pada kolom-kolom pada suatu baris tertentu. Tidak menampilkan beberapa baris sekaligus, Details view dapat dipakai user untuk melihat satu baris per waktu. Gambar 2.33 menunjukkan sebuah contoh dari form dengan sejumlah kontrol Details view. Pada gambar tersebut, kontrol-kontrol TextBox diikat ke kolom-kolom pada tabel Produk. Perhatikan pula bahwa form juga memiliki sebuah batang navigasi. Batang navigasi bekerja seperti yang ditampilkan dengan kontrol DataGridView. Ia dapat dipakai untuk menggeser maju dan mundur, menambahkan baris baru, menghapus baris, dan menyimpan perubahan yang telah dilakukan.

Perhatikan pada Gambar 2.33 bahwa setiap kontrol TextBox memiliki sebuah kontrol Label di sampingnya, yang mengindentifikasi kolom. Ketika Anda menciptakan sebuah Details view, kontrol-kontrol Label tersebut akan diciptakan secara otomatis. Seperti yang Anda lihat pada gambar, garis-bawah pada nama kolom diganti oleh spasi pada kontrol Label.

Gambar 2.33 Kontrol-kontrol Details view



Tutorial 2.3: Menciptakan Aplikasi Produk dan Menggunakan Details View
Langkah 1: Awali Visual Studio (atau Visual Studio Express). Ciptakan sebuah projek Windows Forms Application dengan nama Produk.

Langkah 2: Ubah properti Text dari form Form1 menjadi Produk.

Langkah 3: Klik PROJECT pada batang menu Visual Studio dan kemudian klik Add New Data Source…. Anda akan melihat jendela Data Source Configuration Wizard, seperti ditunjukkan pada Gambar 2.34. Pastikan Database diseleksi dan kemudian klik tombol Next >.

Langkah 4: Jendela sekarang ditampilkan seperti ditunjukkan pada Gambar 2.35. Pastikan bahwa Dataset diseleksi, dan klik Next >.

Langkah 5: Jendela sekarang ditampilkan seperti ditunjukkan pada Gambar 2.36. Pada jendela ini, Anda akan diminta untuk memilih sebuah koneksi data. Karena Anda belum menciptakan sembarang koneksi data untuk projek ini, tidak ada variabel yang disediakan untuk dipilih. Jadi, Anda akan menciptakan sebuah koneksi data baru. Klik tombol New Connection.

Gambar 2.34 Jendela Data Source Configuration Wizard: Choose a Data Source Type


Gambar 2.35 Jendela Data Source Configuration Wizard: Choose a Database Model


Langkah 6: Anda akan melihat kotak dialog Add Connection, seperti ditunjukkan pada Gambar 2.37. (Penting: Layar yang ditampilkan pada Gambar 2.37 dan Gambar 2.38 diambil dari Visual Studio. Jika Anda menggunakan Visual Studio Express, kotak dialog akan ditampilkan sedikit berbeda.)
Lakukan hal-hal berikut:
·     Lihat pada sumber data terseleksi. Pastikan Microsoft SQL Server Database File (SqlClient) diseleksi. Jika tidak, klik pada tombol Change… dan pilih Microsoft SQL Server Database File. (Anda perlu melakukan ini ketika Anda menggunakan Visual Studio Express).
·      Seperti ditunjukkan pada gambar, klik tombol Browse…. Navigasi ke folder Database dan pilih file ProdukDB.mdf.



Gambar 2.36 Jendela Data Source Configuration Wizard: Choose Your Data Connection


Gambar 2.37 Kotak dialog Add Connection (Visual Studio)


Gambar 2.38 menunjukkan bagaimana kotak dialog ditampilkan sekarang. Pada titik ini, Anda secara opsional dapat mengklik tombol Test Connection untuk menguji koneksi ke database. Anda akan melihat pesan Test Connection Succeeded.


Langkah 7: Klik tombol OK pada kotak dialog Add Connection untuk menutup kotak dialog tersebut.

Langkah 8: Anda akan kembali ke Data Source Configuration Wizard, seperti ditunjukkan pada Gambar 2.39. Seperti ditunjukkan pada gambar tersebut, ProdukDB.mdf akan terseleksi sebagai koneksi data. Klik tombol Next > untuk melanjutkan.


Gambar 2.39 Jendela Data Source Configuration Wizard dengan ProdukDB.mdf diseleksi


Langkah 9: Anda akan melihat kotak dialog seperti ditunjukkan pada Gambar 2.40. Pesan tersebut memberitahu Anda bahwa file database berada di luar folder projek, dan Anda akan ditanya apakah Anda ingin menyalin database tersebut ke dalam projek. Klik Yes. Ini akan mempermudah Anda untuk menyalin projek nantinya.

Gambar 2.40 Pesan tentang penyalinan database ke dalam projek


Langkah 10: Jendela Data Source Configuration Wizard sekarang ditampilkan seperti pada Gambar 2.41. Klik tombol Next > untuk melanjutkan.

Gambar 2.41 Jendela Data Source Configuration Wizard: Save Connection String


Langkah 11: Jendela Data Source Configuration Wizard sekarang ditampilkan seperti pada Gambar 2.42. Anda akan diminta untuk memilih objek-objek database yang ingin Anda cantumkan ke dalam dataset. Ekspansi entri Tables dan tempatkan sebuah centang di samping Produk, seperti ditunjukkan pada Gambar 2.42.

Gambar 2.42 Jendela Data Source Configuration Wizard: Choose Your Database Objects


Di bawah jendela, Anda dapat menetapkan sebuah nama untuk dataset. Nama default ProdukDBDataSet telah disediakan. Karena Anda menyeleksi tabel Produk sebagai objek dataset, ubah nama dataset menjadi ProdukDataSet. Klik tombol Finish.

Berikut merupakan simpulan dari apa yang telah Anda lakukan:
·         Anda telah menambahkan database ProdukDB.mdf sebagai suatu sumber data pada aplikasi.
·      Anda telah menciptakan sebuah komponen dataset yang terhubung ke tabel Produk. Nama dari komponen dataset adalah ProdukDataSet.


Langkah 12: Selanjutnya, Anda menampilkan jendela Data Source. Klik menu VIEW pada batang menu Visual Studio, kemudian pilih Other Windows, kemudian klik Data Sources. Jendela Data Sources akan ditampilkan, seperti ditunjukkan pada Gambar 2.43. Perhatikan bahwa jendela ini menampilkan nama dari dataset, yaitu ProdukDataSet, dan nama tabel yang terkoneksi dengan dataset, yaitu Produk.

Gambar 2.43 Jendela Data Sources


Langkah 13: Sekarang Anda menyeleksi Details sebagai kontrol data-bound default untuk tabel Produk. Pada jendela Data Sources, klik entri untuk tabel Produk, seperti ditunjukkan pada gambar di sisi kiri pada Gambar 2.44. Kemudian klik pada anak panah bawah, dan pilih Details, seperti ditunjukkan pada gambar di sisi kanan pada Gambar 2.44.

Gambar 2.44 Memilih Details sebagai kontrol data-bound untuk tabel Produk


Langkah 14: Selanjutnya, Anda menambahkan sebuah Details view pada form. Seperti ditunjukkan pada Gambar 2.45, klik dan geret tabel Produk dari jendela Data Sources ke dalam form. Seperti ditunjukkan pada Gambar 2.46, ini akan menciptakan sejumlah kontrol Details view, berikut dengan sebuah batang navigasi, pada form. (Perbaiki ukuran form dan ukuran dan posisi dari tiap kontrol seperti ditampilkan pada Gambar 2.46).

Gambar 2.45 Menggeret tabel Produk ke dalam form


Gambar 2.46 Menempatkan kontrol-kontrol Details view pada form


Langkah 15: Simpan dan jalankan aplikasi. Form akan ditampilkan seperti pada Gambar 2.47, dengan data dari baris pertama dari tabel Produk ditampilkan. Anda dapat menggunakan batang navigasi untuk memajukan dan memundurkan baris data yang akan ditampilkan. Anda juga dapat menambah baris, menghapus, dan memasukkan data baru. Untuk menyimpan perubahan ke dalam database, klik tombol Save pada batang navigasi.


Gambar 2.47 Aplikasi Buku Telepon dijalankan



2.4 Lebih Lanjut Dengan Kontrol Data-Bound
KONSEP: Kontrol DataGridView dan Details view dapat dimodifikasi dengan sejumlah cara. Kontrol-kontrol lain, seperti kotak list, dapat djadikan data-bound untuk berinteraksi dengan database.

Memodifikasi Kontrol DataGridView
Pada mode Designer, jika Anda menyeleksi kontrol DataGridView, Anda akan melihat sebuah anak panah kecil di pojok kanan-atas dari kotak pembatas kontrol. Gambar 2.48 menunjukkan salah satu contoh. Anak panah tersebut dikenal dengan smart tag. Ketika Anda mengklik pada smart tag itu, sebuah panel akan dimunculkan, yang memberikan Anda sejumlah opsi yang dapat Anda gunakan pada kontrol DataGridView. Gambar 2.49 menunjukkan sebuah contoh dari panel tersebut.

Perhatikan pada gambar tersebut bahwa panel memiliki beberapa kotak periksa:
·   Enable Adding: Ketika item ini dicentang, user dapat menambah baris-baris pada kontrol DataGridView. Item ini tercentang secara default.
·       Enable Editing: Ketika item ini dicentang, user dapat mengubah isi dari baris-baris pada kontrol DataGridView. Item ini tercentang secara default.
·   Enable Deleting: Ketika item ini dicentang, user dapat menghapus baris-baris pada kontrol DataGridView. Item ini tercentang secara default.
·    Enable Column Reordering: Ketika item ini dicentang, user dapat mengklik dan menggeret kolom-kolom untuk ditata-ulang pada kontrol DataGridView. Item ini tidak tercentang secara default.

Gambar 2.48 Smart tag pada kontrol DataGridView


Gambar 2.49 Panel pada kontrol DataGridView


Jika Anda tidak ingin user dapat menghapus, mengedit, atau menghapus baris pada kontrol DataGridView, Anda bisa menghapus tanda centang yang diinginkan.

Gambar 2.50 Menonaktifkan tombol Delete


Anda perlu mengingat bahwa batang navigasi memiliki sejumlah tombol yang dapat dipakai user untuk menambahkan, menghapus, dan menyimpan data pada kontrol DataGridView. Tombol-tombol ini dapat digunakan, meski jika Anda telah menonaktifkan (menghapus centang) penambahan, pengeditan, dan penghapusan pada panel dari kontrol DataGridView. Untuk menonaktifkan sebuah tombol pada batang navigasi, klik kanan pada mode Designer. Ini akan menampilkan menu seperti pada Gambar 2.50. Perhatikan pada gambar bahwa Enabled dicentang. Klik pada Enabled untuk menghapus tanda centang, yang menonaktifkan tombol tersebut. Ketika sebuah tombol dinonaktifkan, ia akan ditampilkan abu-abu pada batang navigasi. Gambar 2.51 menunjukkan sebuah contoh dengan tombol Add, Delete, dan Save dinonaktifkan.


Gambar 2.51 Tombol Add, Delete, dan Save dinon-aktifkan



Memodifikasi Details View
Pada Tutorial 2.3, Anda telah melihat bagaimana sejumlah kontrol diciptakan secara otomatis ketika Anda menciptakan Details view untuk sebuah tabel. Sebagai contoh, beberapa TextBox diciptakan dan diikat pada kolom-kolom secara individual. Kontrol-kontrol Label yang mengidentifikasi kolom-kolom juga diciptakan, berikut dengan batang navigasi.

Ketika Anda menciptakan sebuah Details view, jenis kontrol yang diikat secara otomatis ke sebuah kolom ditentukan oleh tipe data kolom, sebagai berikut:
·         Kolom yang memuat data karakter akan diikat ke kontrol TextBox secara default.
·         Kolom numerik akan diikat ke kontrol TextBox secara default.
·         Kolom bit akan diikat ke kontrol CheckBox.
·      Kolom DateTime akan diikat ke kontrol DateTimePicker, yang dapat dipakai user untuk memilih sebuah tanggal dari kalender.

Adalah dimungkinkan untuk mengubah jenis kontrol yang diikatkan pada sebuah kolom. Sebagai contoh, ingat bahwa tabel Produk pada Tutorial 2.3 memiliki sebuah kolom dengan nama Nomor_Produk. Kolom Nomor_Produk memuat data karakter, sehingga kontrol TextBox diciptakan untuknya ketika Anda menempatkan Details view pada form. Namun, kolom Nomor_Produk merupakan kunci primer untuk tabel, jadi Anda tidak ingin user dapat mengubahnya. Sebuah kontrol Label menjadi opsi yang lebih baik. Dengan cara itu, user dapat melihat nomor produk tetapi tidak dapat mengubahnya.


Sebelum Anda menempatkan Detail view pada sebuah form, Anda dapat menyeleksi jenis kontrol yang akan diikat ke tiap kolom. Pada jendela Data Sources, ekspansi entri tabel seperti ditunjukkan pada gambar di sisi kiri pada Gambar 2.52. Kemudian, klik sebuah kolom dan klik anak panah bawah yang ada di sampingnya, seperti ditunjukkan pada gambar di sisi kanan pada Gambar 2.52. Sebuah menu akan ditampilkan yang menunjukkan jenis-jenis kontrol yang Anda seleksi. Pada gambar di sisi kanan pada Gambar 2.52, Anda menyeleksi kontrol Label untuk kolom Nomor_Produk. Kemudian, Anda menciptakan Detils view, yang ditampilkan seperti pada Gambar 2.53.


Gambar 2.52 Menyeleksi jenis kontrol data-bound untuk sebuah kolom


Gambar 2.53 Details view dengan nomor produk ditampilkan pada sebuah kontrol Label


Ketika Anda menggeret keseluruhan tabel dari jendela Data Source dan menempatkannya ke dalam sebuah form, Details view yang diciptakan memuat kontrol-kontrol untuk semua kolom. Kadangkala Anda tidak ingin semua kolom ditampilkan. Jadi, Anda dapat menggeret kolom secar individual, satu per satu, dari jendela Data Source ke dalam form. Gambar 2.54 menampilkan sebuah contoh dari sebuah Details view yang hanya menampilkan nomor produk dan deskripsi. Anda menciptakan Details view ini dengan menggeret kolom Nomor_Produk dan kemudian kolom Deskripsi dari jendela Data Sources ke dalam form.

Gambar 2.54 Nomor produk dan deskripsi ditampilkan


Mengikat Kolom Ke Kontrol ListBox
Sebuah kotak list dapat dipakai sebagai cara efektif untuk menampilkan data. Anda dapat mengikat sebuah kolom ke suatu kontrol ListBox, yang menyebabkan semua nilai di dalam kolom itu ditampilkan pada kotak list. Ketika user menyeleksi sebuah item dari kotak list, kolom-kolom lain dari baris terseleksi akan ditampilkan.

Untuk mengikat sebuah kontrol ListBox dengan suatu kolom, Anda perlu menetapkan dua properti kontrol: DataSource dan DisplayMember. Properti DataSource mengidentifikasi tabel dari mana ListBox akan membaca datanya. Properti DisplayMember mengidentifikasi kolom. Pada Tutorial 2.4, Anda menggunakan teknik ini untuk menciptakan sebuah form untuk database ProdukDB.mdf.

Tutorial 2.4: Menciptakan Aplikasi Lookup Produk
Langkah 1: Awali Visual Studio (atau Visual Studio Express). Ciptakan sebuah projek Windows Forms Application dengan nama Lookup Produk.

Langkah 2: Ubahlah properti Text dari form Form1 menjadi Lookup Produk.

Gambar 2.55 Kontrol ListBox dan Label diciptakan


Langkah 3: Lakukan langkah-langkah berikut untuk menghubungkan aplikasi ke database ProdukDB, dan pilih tabel Produk sebagai dataset:
·         Dari menu PROJECT, pilih Add New Data Source….
·         Pilih Database dan klik tombol Next >.
·         Pilih Dataset dan klik tombol Next >.
·         Klik New Connection….
·      Pada jendela Add Connection, pastikan bahwa Microsoft SQL Server Database File (SqlClient) sebagai sumber data.
·         Pada jendela Add Connection, klik Browse, dan jelajah ke folder Database. Pilih file ProdukDB.mdf. Klik OK.
·         Klik tombol Next >, dan ketika ditanya apakah Anda ingin menyalin file ke dalam projek, klik Yes.
·         Klik Next >.
·         Pilih tabel Produk sebagai objek database, dan ubah nama dari dataset menjadi ProdukDataSet. Klik Finish.

Langkah 4: Ciptakanlah sebuah kontrol ListBox dengan nama nomorProdukListBox. Tepat di atas ListBox tersebut, tempatkan sebuah kontrol Label yang menampilkan “Pilih Nomor Produk”. Form akan ditampilkan seperti Gambar 2.55.

Langkah 5: Pilih kontrol ListBox. Pada jendela Properties, pilih properti DataSource dan kemudian klik anak panah yang ada di sampingnya. Pada list yang ditampilkan, ekspansi Other Data Sources, kemudian ekspansi Project Data Sources, kemudian ekspansi ProdukDataSet, dan kemudian pilih Produk. Ini ditampilkan pada Gambar 2.56.


Gambar 2.56 Tabel Produk diseleksi pada properti DataSource


Langkah 6: Pilih properti DataMember dari ListBox dan klik pada anak panah yang ada di sampingnya. Pada list yang ditampilkan, pilih Nomor_Produk.

Langkah 7: Pada jendela Data Sources, tetapkan Details pada tabel Produk, seperti ditunjukkan pada Gambar 2.57.


Gambar 2.57 Pilih Details

Langkah 8: Pada jendela Data Sources, ekspansi tabel Produk sehingga nama-nama kolom ditampilkan, seperti ditunjukkan pada Gambar 2.58.


Gambar 2.58 Nama-nama kolom ditampilkan

Langkah 9: Satu per satu, geret kolom Deskripsi, Unit_Tersedia, dan Harga dari jendela Data Sources ke dalam form. Tempatkan mereka seperti ditunjukkan pada Gambar 2.59. Ubah ukuran form sehingga ia ditampilkan seperti pada gambar.


Gambar 2.59 Nama-nama kolom ditampilkan


Langkah 10: Simpan projek dan jalankan aplikasi. Form aplikasi akan ditampilkan seperti pada Gambar 2.60. Perhatikan bahwa kotak list memuat semua nomor produk di dalam tabel Produk. Ketika Anda memilih sebuah nomor produk di dalam kotak list, deskripsi produk, unit tersedia, dan harganya akan ditampilkan pada kontrol-kontrol TextBox. Setelah selesai, keluar dari aplikasi.


Gambar 2.60 Aplikasi Lookup Produk dijalankan


Kontrol Data-Bound Pada Sejumlah Form
Anda telah melihat bahwa ketika Anda menempatkan sebuah kontrol data-bound pada suatu form, Visual Studio secara otomatis akan menciptakan sejumlah komponen agar form dapat terhubung ke database. Komponen-komponen ini mencakup suatu dataset. Ketika Anda menempatkan kontrol-kontrol data-bound pada sejumlah form, Anda perlu mengingat bahwa setiap form memiliki datasetnya sendiri. Ketika Anda melakukan perubahan pada dataset pada suatu form, perubahan itu tidak secara otomatis ditampilkan pada form-form lain yang memiliki datasetnya sendiri. Perhatikan skenario berikut:
·         Form1 menampilkan isi dari sebuah database, menggunakan kontrol DataGridView.
·         Suatu kode di dalam Form1 menampilkan Form2.
·         Form2 juga menampilkan isi dari database yang sama, sehingga user dapat melakukan perubahan dan menyimpannya ke dalam database. User menutup Form2.
·    Form1 masih menampilkan isi semula dari data. Datasetnya tidak secara otomatis diperbarui, sehingga Form1 tidak menunjukkan perubahan yang telah dilakukan oleh Form2.

Untuk memastikan bahwa sebuah dataset memuat salinan terkini dari data, Anda perlu menuliskan kode yang menyebabkan table adapter membaca tabel database dan mengisi dataset. Anda melakukan hal ini dengan memanggil metode Fill dari table adapter. Pada Tutorial 2.5, Anda akan belajar bagaimana melakukannya dengan menciptakan sebuah aplikasi yang secara tepat menangani skenario yang baru saja dijelaskan.

Tutorial 2.5: Menciptakan Aplikasi Produk Multiform
Langkah 1: Awali Visual Studio (atau Visual Studio Express). Ciptakan sebuah projek Windows Forms Application dengan nama Produk Multiform.

Langkah 2: Ubahlah properti Text dari form Form1 menjadi Produk.

Langkah 3: Pada jendela Solution Explorer, ubah nama dari Form1 menjadi FormUtama.cs. Ini akan mengubah nama dari Form1 menjadi FormUtama.

Langkah 4: Lakukan langkah-langkah berikut untuk menghubungkan aplikasi ke database ProdukDB, dan pilih tabel Produk sebagai dataset:
·         Dari menu PROJECT, pilih Add New Data Source….
·         Pilih Database dan klik tombol Next >.
·         Pilih Dataset dan klik tombol Next >.
·         Klik New Connection….
·         Pada jendela Add Connection, pastikan bahwa Microsoft SQL Server Database File (SqlClient) sebagai sumber data.
·         Pada jendela Add Connection, klik Browse, dan jelajah ke folder Database. Pilih file ProdukDB.mdf. Klik OK.
·         Klik tombol Next >, dan ketika ditanya apakah Anda ingin menyalin file ke dalam projek, klik Yes.
·         Klik Next >.
·         Pilih tabel Produk sebagai objek database, dan ubah nama dari dataset menjadi ProdukDataSet. Klik Finish.

Langkah 5: Buka jendela Data Source, dan, seperti ditunjukkan pada Gambar 2.61, geret sebuah kontrol DataGridView ke dalam form, diikat dengan tabel Produk. Setelah menciptakan kontrol DataGridView, ubah ukuran form dan ukuran kontrol seperti ditunjukkan pada Gambar 2.62.


Gambar 2.61 Menciptakan sebuah kontrol DataGridView pada form


Gambar 2.62 Form dan kontrol DataGridView disesuaikan ukurannya


Langkah 6: Ciptakan kontrol-kontrol Button seperti ditunjukkan pada Gambar 2.63. (Anda mengklik event-event handler Click untuk tombol-tombol ini nantinya).




Langkah 7: Tambahkan sebuah form lain dengan nama FormDetil pada projek. Sebagai pengingat, berikut adalah langkah-langkah yang perlu Anda lakukan:
·         Klik PROJECT pada batang menu Visual Studio dan kemudian seleksi Add Windows Form….
·         Pada jendela Add New Item, masukkan FormDetil.cs sebagai nama form dan klik Add.

Langkah 8: Ubah properti Text dari form ini menjadi Detil.


Gambar 2.64 Mengubah view default dari tabel Produk menjadi Details


Langkah 9: Pada jendela Data Sources, ubah view default dari tabel Produk menjadi Details, seperti ditunjukkan pada Gambar 2.64. Kemudian, seperti ditunjukkan pada Gambar 2.65, geret Details view ke dalam form.


Gambar 2.65 Menciptakan Details view pada form


Langkah 10: Sesuaikan ukuran form FormDetil dan ciptakan kontrol Button seperti ditunjukkan pada Gambar 2.66.


Gambar 2.66 Ukuran form disesuaikan dan tombol Tutup ditambahkan


Langkah 11: Klik ganda pada kontrol tombolTutup, dan sempurnakan event handler Click-nya, seperti ditunjukkan pada baris 37-38 dari Program 2.2.

Langkah 12: Kembali ke form FormUtama pada mode Designer. Klik ganda pada kontrol tombolTampil, dan sempurnakan event handler Click-nya, seperti ditunjukkan pada Gambar 37-44 pada Program 2.3. Amati kode lebih dekat:

Baris 38: Statemen ini menciptakan sebuah objek dari kelas FormDetil, yang direferensi oleh variabel detil.

Baris 41: Statemen ini menampilkan form FormDetil. User akan bisa melakukan perubahan pada data produk menggunakan FormDetil dan menyimpan perubahan yang ada pada database.

Baris 44: Statemen ini memanggil metode Fill dari table adapter, melewatkan dataset sebagai argumennya. Hasilnya, dataset akan diisi dengan isi terkini dari tabel Produk, dan isi dari kontrol DataGridView akan diperbarui.

Langkah 13: Kembali ke form FormUtama pada mode Designer. Klik ganda pada kontrol tombolKeluar, dan sempurnakan event handler Click-nya, seperti ditunjukkan pada baris 49-50 pada Program 2.3.

Langkah 14: Simpan projek dan jalankan aplikasi. FormUtama akan menampilkan tabel Produk pada kontrol DataGridView. Klik tombol Tampilkan Detil untuk menampilkan FormDetil.

Pada FormDetil, lakukan sejumlah perubahan pada data. Sebagai contoh, ubah nilai dari potongan data, sisipkan sebuah baris baru, atau hapus sebuah baris yang ada. Setelah melakukan perubahan, pastikan Anda untuk mengklik tombol Save pada batang navigasi. Kemudian, klik tombol Tutup untuk menutup FormDetil.

Kembali ke FormUtama, jelajah data pada kontrol DataGridView untuk memastikan bahwa ia menunjukkan perubahan yang baru saja Anda lakukan. Ketika selesai, keluar dari aplikasi.

Program 2.2 Kode untuk FormDetil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Produk_Multiform
{
    public partial class FormDetil : Form
    {
        public FormDetil()
        {
            InitializeComponent();
        }

        private void produkBindingNavigatorSaveItem_Click(…)
        {
            this.Validate();
            this.produkBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.produkDataSet);

        }

        private void FormDetil_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads...
            this.produkTableAdapter.Fill(this.produkDataSet.Produk);

        }

        private void tombolTutup_Click(object sender, EventArgs e)
        {
            //menutup form.
            this.Close();
        }
    }
}

Program 2.3 Kode untuk FormUtama
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Produk_Multiform
{
    public partial class FormUtama : Form
    {
        public FormUtama()
        {
            InitializeComponent();
        }

        private void produkBindingNavigatorSaveItem_Click(…)
        {
            this.Validate();
            this.produkBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.produkDataSet);

        }

        private void FormUtama_Load(object sender, EventArgs e)
        {
            // TODO: This line of …
            this.produkTableAdapter.Fill(this.produkDataSet.Produk);

        }

        private void tombolTampil_Click(object sender, EventArgs e)
        {
            //menciptakan sebuah objek dari FormDetil
            FormDetil detil = new FormDetil();

            //menampilkan form
            detil.ShowDialog();

            //memperbarui dataset
            this.produkTableAdapter.Fill(this.produkDataSet.Produk);
        }

        private void tombolKeluar_Click(object sender, EventArgs e)
        {
            //menutup form.
            this.Close();
        }
    }
}



2.5 Memilih Data Dengan Statemen Select SQL
KONSEP: SQL adalah sebuah bahasa standar yang didukung oleh DBMS. Statemen Select dipakai di dalam SQL untuk membaca data dari suatu database.

SQL, yang merupakan singkatan dari structured query language, merupakan suatu bahasa standar untuk bekerja dengan sistem manajemen database. Bahasa ini awalnya dikembangkan oleh IBM pada tahun 1970an. Sejak itu, SQL telah diadopsi oleh hampir semua vendor perangkat lunak database sebagai bahasa pilihan untuk berinteraksi dengan DBMS.

SQL memuat sejumlah katakunci. Anda menggunakan katakunci untuk mengkonstruksi statemen, yang juga dikenal dengan query. Statemen ini, atau query ini, yang dikirim ke DBMS, merupakan instruksi yang meminta DMBS untuk melakukan operasi tertentu pada datanya. Pada bagian ini, Anda akan belajar bagaimana mengkonstruksi statemen-statemen SQL sederhana dan kemudian melewatkannya kepada SQL Server DBMS.

CATATAN: Meskipun SQL adalah sebuah bahasa, Anda tidak menggunakannya untuk menuliskan aplikasi. Ia hanya dimaksudkan sebagai cara standar untuk berinteraksi dengan suatu DBMS. Anda tetap memerlukan bahasa pemrograman umum, seperti C#, untuk menuliskan aplikasi.

Pada SQL, Anda menggunakan statemen Select untuk membaca baris-baris pada sebuah tabel. Seperti diimplikasikan dari namanya, statemen Select dapat Anda pakai untuk memilih baris-baris spesifik. Anda akan mempelajarinya dengan bentuk sederhana dari statemen ini, seperti berikut:

Select Kolom From Tabel

Pada bentuk umum ini, Kolom adalah satu atau lebih nama kolom, dan Tabel adalah nama tabel. Berikut adalah sebuah contoh statemen Select yang dapat dieksekusi pada database ProdukDB.mdf:

Select Deskripsi From Produk

Statemen ini membaca kolom Deskripsi untuk setiap baris pada tabel Produk. Anda dapat menetapkan lebih dari satu kolom pada suatu statemen Select dengan memisahkan nama-nama kolom dengan koma. Berikut adalah salah satu contohnya:

Select Deskripsi, Harga From Produk

Statemen ini membaca kolom Deskripsi dan kolom Harga untuk setiap baris pada tabel Produk. Jika Anda ingin membaca setiap kolom pada sebuah tabel, Anda dapat menggunakan karakter * menggantikan pencantuman nama dari tiap kolom. Berikut adalah salah satu contohnya:

Select * From Produk

Statemen ini membaca setiap kolom untuk setiap baris pada tabel Produk. Statemen SQL merupakan statemen bebas bentuk, yang berarti bahwa tab, garis-baru, dan spasi yang ada di antara katakunci akan diabaikan. Sebagai contoh, statemen

Select * From Produk

akan bekerja seperti dengan:

Select
   *
From
   Produk

Selain itu, katakunci SQL dan nama tabel tidak dipengaruhi huruf kecil atau huruf besar. Statemen sebelumnya dapat pula dituliskan sebagai:

SELECT * FROM PRODUK

Menetapkan Kriteria Pencarian dengan Klausa Where
Kadangkala Anda ingin membaca setiap baris pada sebuah tabel. Pada banyak situasi, Anda ingin mempersempit pencarian hanya untuk sejumlah baris tertentu di dalam tabel. Inilah di mana klausa Where dapat digunakan. Klausa Where dapat dipakai dengan statemen Select untuk menetapkan kriteria pencarian. Ketika Anda menggunakan klausa Where, hanya baris-baris yang memenuhi kriteria pencarian yang akan dihasilkan. Bentuk umum dari sebuah statemen Select dengan klausa Where diberikan berikut:

Select Kolom From Tabel Where Kriteria

Pada bentuk umum ini, Kriteria adalah sebuah ekspresi kondisional. Berikut adalah sebuah contoh dari statemen Select yang menggunakan klausa Where:

Select * From Produk Where Harga > 100000

Bagian pertama dari statemen, Select * From Produk, menetapkan bahwa Anda ingin melihat setiap kolom. Klausa Where menetapkan bahwa Anda hanya menginginkan baris-baris dimana di dalamnya isi dari kolom Harga lebih besar dari 100000. Hasilnya, statemen Select hanya membaca baris-baris dimana di dalamnya Harga lebih besar dari 100000.

SQL mendukung operator-operator relasional seperti yang dicantumkan pada tabel 2.1 untuk menuliskan ekspresi kondisional di dalam sebuah klausa Where.

Tabel 2.1 Operator-operator relasional SQL
Operator
Arti
> 
< 
>=
<=
=
<> 
Lebih besar dari
Lebih kecil dari
Lebih besar dari atau sama dengan
Lebik kecil dari atau sama dengan
Sama dengan
 Tidak sama dengan

Perhatikan bahwa tanda sama dengan atau tidak sama dengan pada SQL berbeda dari yang digunakan pada C#. Operator sama dengan menggunakan satu tanda sama dengan, bukan dua tanda sama dengan. Operator tidak sama dengan adalah <>.

Lihat sejumlah contoh berikut dari statemen Select. Statemen berikut dapat dipakai untuk membaca nomor-nomor produk dan harga-harga dari semua item yang dihargai Rp.28950:

Select Nomor_Produk, Harga From Produk Where Harga = 28950

Statemen Select berikut membaca semua kolom hanya dari baris-baris dimana deskripsi adalah “Jins Denim”:

Select * From Produk Where Deskripsi = ‘Jins Denim’

Jika Anda melihat secara hati-hati pada statemen tersebut, Anda akan memerhatikan perbedaan lain antara sintaksi SQL dan sintaksis C#. Pada SQL, literal string diapit oleh kutip tunggal, bukan kutip ganda.

TIP: Jika Anda ingin mencantumkan kutip tunggal sebagai bagian dari sebuah string, Anda hanya perlu menuliskan dua kutip tunggal pada tempatnya. Sebagai contoh, dimisalkan Anda ingin melakukan pencarian pada tabel Produk untuk mencari Baju ‘Wool. Anda dapat menggunakan statemen berikut:

Select * From Produk Where Deskripsi = ‘Baju ‘’Wool’

Perbandingan string pada SQL tergantung pada besar kecilnya huruf. Jika Anda menjalankan statemen berikut pada tabel Produk, Anda tidak akan mendapatkan hasil apapun:

Select * From Produk Where Deskripsi = ‘jins denim’

Namun, Anda dapat menggunakan fungsi Lower() untuk mengkonversi sebuah string menjadi huruf kecil. Berikut adalah salah satu contohnya:

Select * From Produk Where Lower(Deskripsi) = ‘jins denim’

Statemen ini mengkonversi kolom Deskripsi menjadi semua huruf kecil sebelum melakukan perbandingan. Hasilnya, ia akan menghasilkan semua baris dimana Deskripsi sama dengan “jins denim” tanpa memandang besar kecilnya huruf. Anda dapat pula menggunakan fungsi Upper(), yang mengkonversi sebuah string menjadi semua huruf besar, untuk mendapatkan hasil yang sama:

Select * From Produk Where Upper(Deskripsi) = ‘jins denim’

Menggunakan Operator Like
Ada kalanya pencarian terhadap string yang persis sama tidak menghasilkan apa yang Anda inginkan. Sebagai contoh, dimisalkan tabel Produk memuat baris-baris seperti ditunjukkan pada Gambar 2.67 dan Anda menginginkan sebuah daftar yang berisi semua kemeja. Statemen berikut tidak akan membuahkan hasil. Dapatkah Anda menjawabnya mengapa?

Select * From Produk Where Deskripsi = ‘Kemeja’


Gambar 2.67 Tabel Produk di dalam database ProdukDB.mdf


Statemen ini akan melakukan pencarian terhadap baris-baris dimana kolom Deskripsi sama dengan string “Kemeja”. Sayangnya, ia tidak akan menemukannya karena tidak ada satu barispun dimana di dalamnya kolom Deskripsi bernilai sama dengan “Kemeja”. Namun, kata “Kemeja” ditemukan pada kolom Deskripsi pada sejumlah baris. Sebagai contoh, pada Gambar 2.67, kolom Deskripsi pada baris pertama adalah “Kemeja Oxford”, kolom Deskripsi pada baris kedua adalah “Kemeja Poplin”, dan seterusnya.

Untuk menemukan semua kemeja, Anda perlu melakukan pencarian terhadap baris-baris dimana “Kemeja” muncul sebagai suatu substring di dalam kolom Deskripsi. Anda dapat melakukan pencarian semacam itu menggunakan operator Like. Berikut adalah sebuah contoh dalam menggunakannya:

Select * From Produk Where Deskripsi Like ‘%Kemeja%’

Operator Like diikuti oleh sebuah string yang memuat pola karakter. Pada contoh ini, pola karakter adalah ‘%Kemeja%’. Simbol % dipakai sebagai karakter kartu-liar. Ia merepresentasikan sembarang runtun yang memuat nol atau lebih karakter. Pola ‘%Kemeja%’ menetapkan bahwa string “Kemeja” harus ditampilkan dengan sembarang karakter sebelum atau sesudahnya. Jadi, statemen tersebut akan menghasilkan semau baris dimana di dalamnya kolom Deskripsi memuat string “Kemeja”.

Sama halnya, statemen berikut akan menghasilkan semua baris dimana di dalamnya kolom Deskripsi diawali dengan kata “Celana”:

Select * From Produk Where Deskripsi Like ‘Celana%’

Karakter garis-bawah (_) juga dapat dipakai sebagai kartu liar. Tidak seperti karakter %, garis-bawah merepresentasikan satu karakter. Sebagai contoh, lihat pada statemen berikut:

Select * From Produk Where Nomor_Produk Like ‘2_-0_’

Statemen ini akan menghasilkan semua baris dimana kolom Nomor_Produk diawali dengan “2” yang diikuti oleh satu karakter, diikuti dengan “-0”, yang diikuti satu karakter lagi.

Anda dapat menggunakan operator Not untuk mendiskualifikasi suatu pola karakter pada sebuah kriteria pencarian. Sebagai contoh, dimisalkan bahwa Anda ingin mendapatkan semua item yang bukan kemeja. Statemen berikut akan menghasilkannya:

Select * From Produk Where Deskripsi Not Like ‘%Kemeja%’

Menggunakan And dan Or
Anda dapat menggunakan operator And dan Or untuk menetapkan beberapa kriteria pencarian di dalam klausa Where. Sebagai contoh, perhatikan statemen berikut:

Select * From Produk Where Harga > 20000 And Harga < 30000

Operator And mensyaratkan bahwa kedua kriteria harus dipenuhi agar sebuah baris dikualifikasi sebagai kecocokan. Baris-baris yang dihasilkan dari statemen ini adalah mereka yang kolom Harga-nya memuat sebuah nilai yang lebih besar dari 20000 dan kurang dari 30000.

Berikut adalah sebuah contoh yang menggunakan operator Or:

Select * From Produk
Where Deskripsi Like ‘%Kemeja%’ or Nomor_Produk Like ‘10-%’

Operator Or mensyaratkan bahwa salah satu kriteria pencarian harus dipenuhi agar sebuah baris dikualifikasi sebagai kecocokan. Statemen ini melakukan pencarian baris-baris dimana kolom Deskripsi memuat string “Kemeja” pada posisi sembarang atau dimana kolom Nomor_Produk diawali dengan “10-“.

Mengurutkan Hasil dari Query Select
Jika Anda ingin mengurutkan hasil dari sebuah query Select, Anda dapat menggunakan klausa Order By. Berikut adalah salah satu contohnya:

Select * From Produk Order By Harga

Statemen ini menghasilkan semua baris di dalam tabel Produk, yang diurutkan berdasarkan kolom Harga. Apa yang dihasilkan diurutkan dengan tatanan menaik pada kolom Harga, yang berarti bahwa produk dengan harga terendah akan ditampilkan pertama.

Berikut adalah sebuah query Select yang menggunakan klausa Where dan sebuah klausa Order By:

Select * From Produk
    Where Harga > 30000
    Order By Harga

Statemen ini menghasilkan semua baris di dalam tabel Produk dimana kolom Harga memuat sebuah nilai yang lebih besar dari 30000, yang diurutkan secara menaik berdasarkan harga.

Jika Anda ingin menghasilkan sebuah daftar yang diurutkan secara menurun (dari tertinggi ke terendah), Anda bisa menggunakan operator Desc, seperti ditunjukkan di sini:

Select * From Produk
    Where Harga > 30000
    Order By Harga Desc


Table Adapter Query
Table adapter query adalah sebuah statemen SQL yang disimpan di dalam suatu table adapter dan dapat dieksekusi dengan cara memanggil sebuah metode. Sebagai contoh, semua table adapter memuat sebuah query yang mengisi dataset dengan data dari tabel. Query itu dapat dieksekusi dengan memanggil metode Fill dari table adapter. Ketika Anda menempatkan sebuah kontrol data-bound, seperti kontrol DataGridView, pada sebuah form, event handler Load dari form itu yang memanggil metode Fill dari table adapter akan diciptakan secara otomatis untuk form tersebut.

Lihat pada sebuah contoh berikut. Pada Visual Studio, buka projek Produk Multiform yang Anda ciptakan pada Tutorial 2.5, dan buka kode sumber untuk form FormUtama. Lihat pada event handler Load dari form, yang ditunjukkan di sini (komentar yang ada pada baris 3 diperpendek):

1
2
3
4
5
6
private void FormUtama_Load(object sender, EventArgs e)
{
    // TODO: This line of code loads data into …
    this.produkTableAdapter.Fill(this.produkDataSet.Produk);

}

Statemen pada baris 4 memanggil metode Fill dari produkTableAdapter, melewatkan tabel Produk dari dataset sebagai argumennya. Metode Fill mengisi tabel dataset dengan baris-baris yang dihasilkan dari sebuah statemen SQL. Sekarang, lihat pada statemen SQL yang dieksekusi oleh metode Fill. Pada jendela Solution Explorer, Anda akan melihat sebuah entri dengan nama ProdukDataSet.xsd, seperti ditunjukkan pada Gambar 2.68. Ini adalah file definisi skema yang menjelaskan isi dari produkDataSet. Klik ganda pada entri ProdukDataSet.xsd untuk membukanya pada sebuah jendela editor, seperti ditunjukkan pada Gambar 2.69. Area di atas diagram menunjukkan kolom-kolom yang dicantumkan di dalam dataset, dan area di bawah menunjukkan metode-metode table adapter query.


Gambar 2.68 Entri file definisi skema pada jendela Solution Explorer


Gambar 2.69 File definisi skema ProdukDataSet.xsd dibuka


Gambar 2.70 Memilih Configure dari menu yang ditampilkan



Klik kanan pada area yang terdapat Fill, GetData() dan, seperti ditunjukkan pada Gambar 2.70, pilih Configure dari menu yang ditampilkan. Ini akan menampilkan jendela TableAdapter Configuration Wizard seperti ditunjukkan pada Gambar 2.71. Perhatikan query SQL yang ada di dalam jendela TableAdapter Configuration Wizard. Dataset diisi dengan baris-baris yang dihasilkan oleh statemen Select ini. Jika Anda mengubah statemen Select ini, misalnya, dengan menambahkan sebuah klausa Where dan kemudian mengklik tombol Finish, maka data yang awalnya ditampilkan pada kontrol  DataGridView akan berubah. Ketika Anda selesai memeriksa jendela ini, klik tombol Cancel untuk menutupnya.


Gambar 2.71 Jendela TableAdapter Configuration Wizard



Menambahkan Table Adapter Query Baru
Anda dapat menambahkan query SQL sendiri pada suatu table adapter dan memanggilnya dari kode C# Anda. Pada Tutorial 2.6, Anda akan menambahkan beberapa query pada table adapter, dan kemudian menciptakan tombol-tombol pada form aplikasi yang mengeksekusi query-query tersebut.

Tutorial 2.6: Menciptakan Aplikasi Query Produk
Pada tutorial ini, Anda akan menciptakan suatu aplikasi yang menampilkan tabel Produk dari database ProdukDB.mdf pada sebuah kontrol DataGridView. Anda juga menambahkan dua query SQL pada table adapter. Kedua query ini melakukan berikut:
·         Menghasilkan semua baris, diurutkan berdasarkan harga dengan tatanan menaik
·         Menghasilkan hanya baris-baris dengan lebih 100 unit tersedia

Kemudian, Anda menciptakan tombol-tombol pada form aplikasi yang mengeksekusi kedua query tersebut.
Langkah 1: Awali Visual Studio (atau Visual Studio Express). Ciptakan sebuah projek Windows Forms Application dengan nama Query Produk.

Langkah 2: Ubah properti Text dari form Form1 menjadi Query Produk.

Langkah 3: Lakukan langkah-langkah berikut untuk menghubungkan aplikasi ke database ProdukDB, dan pilih tabel Produk sebagai dataset:
·         Dari menu PROJECT, pilih Add New Data Source….
·         Pilih Database dan klik tombol Next >.
·         Pilih Dataset dan klik tombol Next >.
·         Klik New Connection….
·         Pada jendela Add Connection, pastikan bahwa Microsoft SQL Server Database File (SqlClient) sebagai sumber data.
·         Pada jendela Add Connection, klik Browse, dan jelajah ke folder Database. Pilih file ProdukDB.mdf. Klik OK.
·         Klik tombol Next >, dan ketika ditanya apakah Anda ingin menyalin file ke dalam projek, klik Yes.
·         Klik Next >.
·         Pilih tabel Produk sebagai objek database, dan ubah nama dari dataset menjadi ProdukDataSet. Klik Finish.

Langkah 4: Buka jendela Data Source dan geret sebuah kontrol DataGridView ke dalam form, diikat ke tabel Produk. Setelah menciptakan kontrol DataGridView, sesuaikan ukuran form dan kontrol, seperti ditunjukkan pada Gambar 2.72.


Gambar 2.72 Form aplikasi


Gambar 2.73 Menambah sebuah query pada table adapter


Langkah 5: Sekarang Anda menambahkan query pertama, yang mengurutkan data di dalam dataset berdasarkan harga. Pada jendela Solution Explorer, klik ganda pada entri ProdukDataSet.xsd. Ini akan membuka deskripsi skema dataset. Klik kanan di luasan yang tertulis ProdukTableAdapter. Seperti ditunjukkan pada Gambar 2.73, pilih Add, dan kemudian klik Query….

Langkah 6: Jendela TableAdapter Query Configuration Wizard akan ditampilkan, seperti pada Gambar 2.74. Pastikan Use SQL Statements diseleksi, dan kemudian klik Next >.


Gambar 2.74 Jendela TableAdapter Query Configuration Wizard: Choose a Command Type


Langkah 7: Wizard sekarang meminta Anda untuk memilih sebuah jenis query, seperti ditunjukkan pada Gambar 2.75. Pastikan SELECT which returns rows diseleksi, dan kemudian klik Next >.


Gambar 2.75 Jendela TableAdapter Query Configuration Wizard: Choose a Query Type


Langkah 8: Wizard sekarang meminta Anda untuk menetapkan Specify a SQL SELECT statement. Sebuah statemen telah ditunjukkan yang menghasilkan setiap baris di dalam tabel Produk. Tambahkan klausa Order By Harga di akhir statemen, seperti ditunjukkan pada Gambar 2.76. Klik Next >.

Gambar 2.76 Jendela TableAdapter Query Configuration Wizard: Specify a SQL SELECT statement


Gambar 2.77 Jendela TableAdapter Query Configuration Wizard: Choose Methods to Generate



Langkah 9: Wizard sekarang meminta Anda untuk memilih metode yang akan dihasilkan (Choose Methods to Generate). Pada kasus ini, Anda hanya ingin menghasilkan sebuah metode untuk mengisi dataset dengan hasil dari statemen query. Lakukan seleksi-seleksi berikut:
·         Pastikan Fill a DataTable dicentang.
·      Di bawah Fill a DataTable, masukkan FillByHarga sebagai nama metode. Ini akan menjadi nama dari metode yang mengeksekusi statemen SQL ini.
·         Pastikan Return a DataTable tidak dicentang.

Jendela sekarang ditampilkan seperti pada Gambar 2.77. Klik Next >.

Langkah 10: Wizard sekarang menampilkan hasil, seperti ditunjukkan pada Gambar 2.78. Klik tombol Finish.

File definisi skema (ProdukDataSet.xsd) sekarang ditampilkan seperti pada Gambar 2.79. Perhatikan bahwa metode FillByHarga sekarang ditampilkan di area bawah dari diagram.


Gambar 2.78 Jendela TableAdapter Query Configuration Wizard: Wizard Results


Gambar 2.79 Metode FillByHarga() ditampilkan pada file definisi skema


Langkah 11: Selanjutnya, Anda menambahkan query kedua, yang menghasilkan hanya baris-baris dengan jumlah unit tersedia lebih besar dari 100. Lakukan langkah-langkah berikut (hampir semua sama dengan apa yang telah Anda lakukan untuk menambahkan query sebelumnya):
·         Pada definisi skema, klik kanan luasan yang tertulis ProdukTableAdapter.
·         Pada menu yang dimunculkan, pilih Add, dan kemudian klik Query…. (Atau, jika Anda melihat Add Query…, pilih itu).
·         Jendela TableAdapter Query Configuration Wizard akan ditampilkan. Pastikan Use SQL Statements diseleksi dan kemudian klik tombol Next >.
·         Wizar sekarang ditampilkan dan meminta Anda untuk memilih jenis query. Pastikan SELECT which returns rows diseleksi dan kemudian klik Next >.
·         Wizard sekarang meminta Anda untuk menetapkan statemen SELECT SQL (Specify a SQL SELECT statement). Sebuah statemen telah ditampilkan yang menghasilkan setiap baris di dalam tabel Produk. Tambahkan klausa WHERE Unit_Tersedia > 100 di akhir statemen, seperti ditunjukkan pada Gambar 2.80. Klik Next >.


Gambar 2.80 Jendela TableAdapter Query Configuration Wizard: Specify a SQL SELECT statement



Gambar 2.81 Jendela TableAdapter Query Configuration Wizard: Choose Methods to Generate


·     Wizard sekarang meminta Anda untuk memilih metode yang akan dibangkitkan (Choose Methods to Generate). Pastikan seleksi-seleksi berikut: Pastikan Fill a DataTable dicentang, di bawah Fill a DataTable masukkan FillByUnit sebagai nama metode. Nama itu akan menjadi nama metode yang mengeksekusi statemen SQL. Pastikan Return a DataTable tidak dicentang.
·         Jendela akan ditampilkan seperti ditunjukkan pada Gambar 2.81. Klik Next >.
·         Wizard sekarang menampilkan hasil. Klik tombol Finish.

File definisi skema (ProdukDataSet.xsd) akan ditampilkan seperti pada Gambar 2.82. Perhatikan bahwa dua metode yang telah Anda ciptakan FillByHarga() dan FillByUnit(), sekarang ditampilkan di luasan bawah dari diagram.


Gambar 2.82 Metode FillByHarga() dan FillByUnit() ditampilkan pada file definisi skema


Langkah 12: Sekarang Anda menambahkan kontrol-kontrol Button pada form aplikasi yang mengeksekusi query-query SQL. Buka Form1 pada mode Designer dan tambahkan dua kontrol Button seperti ditunjukkan pada Gambar 2.83.


Gambar 2.83 Dua kontrol Button ditambahkan pada form


Langkah 13: Klik ganda pada kontrol tombolUrut. Sempurnakan event handler tombolUrut_Click dengan menuliskan kode pada baris 37 pada Program 2.4. Statemen ini memanggil metode FillByHarga dari table adapter.

Langkah 14: Kembali ke Form1 pada mode Designer dan klik ganda pada kontrol tombolProduk. Sempurnakan event handler tombolProduk_Click dengan menuliskan kode pada baris 42 pada Program 2.4. Statemen ini memanggil metode FillByUnit dari table adapter.

Langkah 15: Simpan projek, dan kemudian jalankan aplikasi. Ketika form ditampilkan, ia akan menampilkan semua baris di dalam tabel Produk pada kontrol DataGridView. Ketika Anda mengklik tombol Urut Berdasarkan Harga, data akan ditampilkan dengan diurutkan berdasarkan harga. Ketika Anda mengklik tombol Produk Dengan Lebih 100 Unit, Anda akan hanya melihat baris-baris dimana Unit_Tersedia lebih besar dari 100. Ketika selesai, tutup form untuk keluar.

Program 2.4 Kode untuk Form1 pada aplikasi Query Produk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Query_Produk
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void produkBindingNavigatorSaveItem_Click(…)
        {
            this.Validate();
            this.produkBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.produkDataSet);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads …
            this.produkTableAdapter.Fill(this.produkDataSet.Produk);

        }

        private void tombolUrut_Click(object sender, EventArgs e)
        {
            this.produkTableAdapter.FillByHarga(this.produkDataSet.Produk);
        }

        private void tombolProduk_Click(object sender, EventArgs e)
        {
            this.produkTableAdapter.FillByUnit(this.produkDataSet.Produk);
        }
    }
}

Fungsi-Fungsi Matematika SQL
SQL menyediakan sejumlah fungsi untuk melakukan perhitungan-perhitungan. Sebagai contoh, fungsi Avg menghitung nilai rerata pada kolom tertentu. Berikut adalah sebuah contoh statemen Select yang menggunakan fungsi Avg:

Select Avg(Harga) From Produk

Statemen ini menghasilkan sebuah nilai tunggal: rerata dari semua nilai pada kolom Harga. Karena Anda tidak menggunakan klausa Where, ia menggunakan semua baris pada tabel Produk pada perhitungan. Berikut adalah salah satu contoh yang menghitung harga rerata dari semua item yang memiliki nomor produk yang diawali dengan “20”:

Select Avg(Harga)From Produk Where Nomor_Produk LIKE '20%'

Fungsi matematika lain adalah Sum, yang menghitung penjumlahan atas nilai-nilai pada suatu kolom. Statemen berikut, yang bisa saja tidak berguna, menghitung penjumlahan atas nilai-nilai pada kolom Harga:

Select Sum(Harga) From Produk

Fungsi Min dan Max menentukan nilai minimum dan nilai maksimum yang ada pada suatu kolom. Statemen berikut menghasilkan nilai minimum pada kolom Harga:

Select Min(Harga) From Produk

Statemen berikut menghasilkan nilai maksimum pada kolom Harga:

Select Max(Harga) From Produk

Fungsi Count dapat dipakai untuk menentukan banyak baris pada sebuah tabel, seperti didemonstrasikan oleh statemen berikut:

Select Count(*) From Produk

Karakter * mengindikasikan bahwa Anda ingin menghitung keseluruhan baris. Berikut adalah contoh lain, yang menghasilkan banyak item dengan harga lebih besar dari 100000:

Select Count(*) From Produk Where Harga > 100000



Pada Tutorial 2.7, Anda akan menambahkan query lain pada table adapter pada aplikasi Query Produk. Query baru ini akan menampilkan harga rerata dari semua item di dalam database.

Tutorial 2.7: Menciptakan Aplikasi Query Produk
Pada tutorial ini, Anda akan menambahkan sebuah query pada aplikasi Query Produk yang menghasilkan harga rerata dari semua item di dalam tabel Produk. Anda juga akan menambahkan sebuah tombol pada form aplikasi yang mengeksekusi query dan menampilkan hasilnya.

Langkah 1: Pastikan projek Query Produk dibuka pada Visual Studio (atau Visual Studio Express) dari tutorial sebelumnya.

Langkah 2: Pada jendela Solution Explorer, klik ganda pada entri ProdukDataSet.xsd. Ini akan membuka deskripsi skema dataset. Klik kanan pada luasan yang tertulis ProdukTableAdapter. Pada menu yang dimunculkan, pilih Add dan kemudian klik Query…. (Atau, jika Anda melihat Add Query… pada menu, pilih itu).

Langkah 3: Pada jendela TableAdapter Query Configuration Wizard, pastikan Use SQL Statements diseleksi dan kemudian pilih Next >.

Langkah 4: Wizard sekarang meminta Anda untuk memilih jenis query. Pastikan SELECT which returns a single value diseleksi dan kemudian klik Next >.

Langkah 5: Wizard sekarang meminta Anda untuk menetapkan statemen SELECT SQL. Hapus statemen yang ditunjukkan pada jendela dan ganti dengan berikut:

Select Avg(Harga) From Harga

Jendela sekarang akan ditampilkan seperti pada Gambar 2.84. Klik Next >.


Gambar 2.84 Jendela TableAdapter Query Configuration Wizard: Specify a SQL SELECT statement



Langkah 6: Wizard sekarang meminta Anda untuk memilih nama  fungsi (Choose Function Name). Nama yang Anda tetapkan pada jendela ini akan menjadi nama metode yang mengeksekusi query. Seperti ditunjukkan pada Gambar 2.85, ubah nama menjadi HargaRerata dan kemudian klik Next >.


Gambar 2.85 Jendela TableAdapter Query Configuration Wizard: Choose Function Name


Langkah 7: Wizard sekarang menampilkan hasil. Klik tombol Finish. File definisi skema (ProdukDataSet.xsd) sekarang ditampilkan seperti pada Gambar 2.86. Perhatikan bahwa metode HargaRerata sekarang ditampilkan, berikut dengan metode-metode lain yang sebelumnya telah Anda ciptakan.

Gambar 2.86 Metode HargaRerata() ditampilkan pada file definisi skema


Langkah 8: Selanjutnya, Anda menambahkan sebuah kontrol Button pada form aplikasi yang mengeksekusi metode HargaRerata dari table adapter. Buka Form1 pada mode Designer dan kontrol tombolHargaRerata ditampilkan pada Gambar 2.87a.


Gambar 2.87a Kontrol tombolHargaRerata ditambahkan pada form


Langkah 9: Klik ganda pada kontrol tombolHargaRerata. Sempurnakan event handler tombolHargaRerata_Click dengan menuliskan kode pada baris 47-55 pada Program 2-5. Amati kode lebih dekat:

Baris 48: Statemen ini mendeklarasikan sebuah variabel decimal lokal dengan nama hargaRerata.
Baris 51: Statemen ini memanggil metode HargaRerata dari table adapter, yang memberikan hasil dari statemen Select yang telah Anda tuliskan pada Langkah 4. Nilai yang dihasilkan ditugaskan kepada variabel hargaRerata. Perhatikan bahwa Anda perlu menggunakan operator cast untuk secara eksplisit mengkonversi nilai menjadi sebuah decimal.
Baris 54-55: Statemen ini menampilkan sebuah kotak pesan yang menunjukkan harga rerata dari semua item pada tabel.

Langkah 10: Simpan projek dan kemudian jalankan aplikasi. Klik tombol Harga Rerata Dari Semua Item. Anda akan melihat sebuah kotak pesan yang menampilkan harga rerata dari semua item pada tabel. Lihat Gambar 2.87b.

Program 2.5 Kode untuk Form1 pada aplikasi Query Produk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Query_Produk
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void produkBindingNavigatorSaveItem_Click(…)
        {
            this.Validate();
            this.produkBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.produkDataSet);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code …
            this.produkTableAdapter.Fill(this.produkDataSet.Produk);

        }

        private void tombolUrut_Click(object sender, EventArgs e)
        {
            this.produkTableAdapter.FillByHarga(this.produkDataSet.Produk);
        }

        private void tombolProduk_Click(object sender, EventArgs e)
        {
            this.produkTableAdapter.FillByUnit(this.produkDataSet.Produk);
        }

        private void tombolHargaRerata_Click(object sender, EventArgs e)
        {
            //mendeklarasikan sebuah variabel untuk memuat harga rerata
            decimal hargaRerata;

            //mendapatkan harga rerata
            hargaRerata = (decimal) this.produkTableAdapter.HargaRerata();

            //menampilkan harga rerata
            MessageBox.Show("Harga rerata dari semua item: Rp. " +
              hargaRerata.ToString());
        }
    }
}


Gambar 2.87b Aplikasi Query Produk ketika dijalankan dan ketika kontrol tombolHargaRerata diklik


Parameter-Parameter Query
Query SQL dapat menerima argumen. Sama seperti metode biasa, argumen dilewatkan kepada variabel parameter. Pada statemen SQL, variabel parameter diawali dengan simbol @. Statemen berikut menunjukkan salah satu contohnya:

Select * From Produk Where Harga < @nilaiHarga

Statemen ini membaca semua baris dimana di dalamnya kolom Harga bernilai kurang dari nilai dari parameter nilaiHarga. Berikut adalah sebuah contoh lain:

Select * From Produk
Where Harga < @nilaiHarga And Unit_Tersedia < @nilaiUnit

Statemen ini membaca semua baris dimana di dalamnya kolom Harga bernilai kurang dari nilai dari parameter @nilaiHarga dan kolom Unit_Tersedia bernilai kurang dari nilai dari parameter @nilaiUnit.

Ketika Anda memanggil metode table adapter untuk sebuah query SQL, Anda perlu melewatkan argumen-argumen untuk setiap parameter yang dipakai di dalam query. Pada Tutorial 2.8, Anda akan menciptakan sebuah aplikasi yang mendapatkan suatu nilai dari user dan melewatkan nilai itu sebagai argumen kepada sebuah query SQL.

Tutorial 2.8: Menciptakan Aplikasi Pencarian Produk
Pada tutorial ini, Anda akan menciptakan sebuah aplikasi yang menampilkan tabel Produk dari database ProdukDB.mdf pada sebuah kontrol DataGridView. User akan dapat memasukkan suatu nilai ke dalam sebuah kotak teks dan melakukan pencarian semua item yang memuat nilai itu.

Langkah 1: Awali Visual Studio (atau Visual Studio Express). Ciptakan sebuah projek Windows Forms Application dengan nama Pencarian Produk.

Langkah 2: Ubah properti Text dari form Form1 menjadi Pencarian Produk.

Langkah 3: Lakukan langkah-langkah berikut untuk menghubungkan aplikasi ke database ProdukDB, dan pilih tabel Produk sebagai dataset:
·         Dari menu PROJECT, pilih Add New Data Source….
·         Pilih Database dan klik tombol Next >.
·         Pilih Dataset dan klik tombol Next >.
·         Klik New Connection….
·      Pada jendela Add Connection, pastikan bahwa Microsoft SQL Server Database File (SqlClient) sebagai sumber data.
·         Pada jendela Add Connection, klik Browse, dan jelajah ke folder Database. Pilih file ProdukDB.mdf. Klik OK.
·         Klik tombol Next >, dan ketika ditanya apakah Anda ingin menyalin file ke dalam projek, klik Yes.
·         Klik Next >.
·         Pilih tabel Produk sebagai objek database, dan ubah nama dari dataset menjadi ProdukDataSet. Klik Finish.

Langkah 4: Buka jendela Data Sources dan geret sebuah kontrol DataGridView ke dalam form, yang diikat dengan tabel Produk.

Langkah 5: Sesuaikan ukuran form dan ukuran kontrol DataGridView, seperti ditunjukkan pada Gambar 2.88. Kemudian, tempatkan kotak grup, kotak teks, dan tombol-tombol seperti ditunjukkan pada gambar. Berikut adalah simpulan dari apa yang akan dilakukan kontrol-kontrol Button ketika aplikasi dijalankan:
·         Kontrol tombolCari akan mendapatkan nilai yang dimasukkan ke dalam kotakTeksCari dan melewatkannya sebagai argumen kepada sebuah query SQL. Query akan menghasilkan semua baris pada tabel Produk yang memuat nilai yang dilewatkan sebagai argumen itu. Baris-baris itu akan ditampilkan pada kontrol DataGridView.
·         Kontrol tombolTampilSemua akan menampilkan semua baris dari tabel Produk pada kontrol DataGridView.

Gambar 2.88 Form aplikasi


Langkah 6: Pada jendela Solution Explorer, klik ganda pada entri ProdukDataSet. Ini akan membuka deskripsi skema dataset. Klik kanan pada luasan yang bertuliskan ProdukTableAdapter. Pada menu yang dimunculkan, pilih Add dan kemudian klik Query… (Atau, jika Anda melihat Add Query… pada menu, pilih itu).

Langkah 7: Jendela TableAdapter Query Configuration Wizard akan ditampilkan. Pastikan Use SQL Statements diseleksi dan kemudian klik Next >.

Langkah 8: Wizard sekarang meminta Anda untuk memilih jenis query. Pastikan SELECT which returns rows diseleksi dan kemudian klik Next >.

Langkah 9: Wizard sekarang meminta Anda untuk menetapkan statemen SELECT SQL (Specify a SQL SELECT statement). Modifikasi statemen default yang disediakan di sini:

Select Nomor_Produk, Deskripsi, Unit_Tersedia, Harga
From Produk
Where Deskripsi Like '%' + @nilai + ‘%’

Perhatikan bahwa sebuah parameter query dengan nama @nilai digunakan pada klausa Where. Selain itu, perhatikan kegunaan operator + untuk penyambungan string. Ketika query ini dieksekusi, ia akan menghasilkan semua baris dimana di dalamnya kolom Deskripsi memuat nilai yang ditetapkan oleh parameter @nilai. Jendela pada titik ini akan ditampilkan seperti pada Gambar 2.89. Klik Next >.


Gambar 2.89 Jendela TableAdapter Query Configuration Wizard: Specify a SQL SELECT statement


Langkah 10: Wizard sekarang meminta Anda untuk memilih metode yang akan dihasilkan (Choose Methods to Generate). Lakukan seleksi-seleksi berikut:
·         Pastikan Fill a DataTable dicentang.
·         Di bawah Fill a DataTable, masukkan CariDesc sebagai nama metode. Ini akan menjadi nama dari metode yang mengeksekusi statemen SQL ini.
·         Pastikan Return a DataTable tidak dicentang.

Jendela sekarang ditampilkan seperti pada Gambar 2.90. Klik Next >.

Gambar 2.90 Jendela TableAdapter Query Configuration Wizard: Choose Methods to Generate


Langkah 11: Wizard sekarang menampilkan hasil. Klik tombol Finish. File definisi skema (ProdukDataSet.xsd) sekarang ditampilkan separti pada Gambar 2.91. Perhatikan bahwa CariDesc(@nilai) sekarang ditampilkan pada luasan di bawah dari diagram.


Gambar 2.91 Metode CariDesc yang ada pada file definisi skema


Langkah 12: Buka Form1 pada mode Designer dan klik ganda pada kontrol tombolCari. Sempurnakan event handler tombolCari_Click dengan menuliskan kode yang ditunjukkan pada baris 37 dan 38 pada Program 2.6.

Statemen-statemen pada kedua baris itu memanggil metode CariDesc dari table adapter. Argumen pertama adalah tabel Produk dari dataset, dan argumen kedua adalah properti Text dari kontrol kotakTeksCari. Argumen kedua akan dilewatkan kepada parameter query @nilai.

Langkah 13: Kembali ke Form1 pada mode Designer dan klik ganda pada kontrol tombolTampilSemua. Sempurnakan event handler tombolTampilSemua_Click dengan menuliskan kode pada baris 43 pada Program 2.6. Statemen pada baris ini memanggil metode Fill dari table adapter. Ingat bahwa metode Fill mengisi tabel dataset dengan semua baris dari tabel.

Langkah 14: Simpan projek dan kemudian jalankan aplikasi. Masukkan suku pencarian, seperti Kemeja atau Celana, pada kotak teks dan klik tombol Cari. Anda akan melihat semua baris yang memuat suku pencarian yang ditampilkan pada kontrol DataGridView. Untuk mereset kontrol DataGridView sehingga ia menampilkan semua baris, klik tombol Tampilkan Semua Item. Lihat Gambar 2.92 dan Gambar 2.93.

Gambar 2.92 Hasil pencarian query dengan suku pencarian “Kemeja”


Gambar 2.93 Hasil pencarian query dengan suku pencarian “Celana”


Program 2.6 Kode untuk Form1 pada aplikasi Pencarian Produk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Pencarian_Produk
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void produkBindingNavigatorSaveItem_Click(…)
        {
            this.Validate();
            this.produkBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.produkDataSet);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code …
            this.produkTableAdapter.Fill(this.produkDataSet.Produk);

        }

        private void tombolCari_Click(object sender, EventArgs e)
        {
            this.produkTableAdapter.CariDesc(
              this.produkDataSet.Produk, kotakTeksCari.Text);
        }

        private void tombolTampilSemua_Click(object sender, EventArgs e)
        {
            this.produkTableAdapter.Fill(this.produkDataSet.Produk);
        }
    }
}





1 comment:

  1. Logika Pemrograman: Bab 2: Pemrograman C.Net: Database Dan Web >>>>> Download Now

    >>>>> Download Full

    Logika Pemrograman: Bab 2: Pemrograman C.Net: Database Dan Web >>>>> Download LINK

    >>>>> Download Now

    Logika Pemrograman: Bab 2: Pemrograman C.Net: Database Dan Web >>>>> Download Full

    >>>>> Download LINK

    ReplyDelete