Pada bagian ini, kita akan menggunakan database yang sama dengan bagian sebelumnya yang dapat dibuat dengan query berikut:
#Buat databaseCREATE DATABASE IF NOT EXISTS kampus;#Aktifkan databaseUSE kampus;#Buat tabelCREATE TABLE IF NOT EXISTS mahasiswa ( id INT PRIMARY KEY AUTO_INCREMENT, namalengkap VARCHAR(100), gender VARCHAR(10), fakultas VARCHAR(50), tanggaldaftar DATETIME, updated DATETIME )engine=innodb;
Untuk membaca data dari database, terdapat paling tidak dua cara:
Menggunakan DataReader
Untuk menggunakan DataReader, kita memerlukan Connection, Command dan DataReader itu sendiri. Perlu diketahui bahwa DataReader tidak memiliki Constructor. Kita harus mengisi nilai DataReader menggunakan method ExecuteReader pada suatu objek Command. Berikut contoh menggunakan DataReader:var conn = new MySqlConnection("Host=localhost;Uid=root;Pwd=123;Database=kampus");var cmd = new MySqlCommand("SELECT id, namalengkap, gender, fakultas, tanggaldaftar, updated FROM mahasiswa", conn);//Koneksi harus terbuka untuk menjalankan ExecuteReaderconn.Open();var r = cmd.ExecuteReader();//Agar jelas, Anda juga bisa menuliskan://MySqlDataReader r = cmd.ExecuteReader();//Cek apakah DataReader memiliki baris dataif (r.HasRows) { //Method Read mencoba untuk membaca satu baris data dari database //Menghasilkan true jika ada baris data, false apabila tidak ada baris data r.Read(); Console.WriteLine("Data mahasiswa:"); //Membaca data perkolom dengan: r[index kolom / nama kolom] Console.WriteLine(r[0]); //Kolom pertama:id (index 0) Console.WriteLine(r[1]); //Kolom kedua:namalengkap (index 1) Console.WriteLine(r[2]); //Kolom ketiga:gender (index 2) Console.WriteLine(r["fakultas"]); //Dapat juga menggunakan nama kolom Console.WriteLine(((DateTime)r["tanggaldaftar"]).ToString("dd MMMM yyyy")); //Kode di atas langsung mengkonversi data menjadi DateTime, kemudian menjadi string. r.Close(); //Sebaiknya r (DataReader) ditutup setelah dipakai}//Tutup koneksi setelah selesai membaca dataconn.Close();
Properties r, yaitu r.HasRows di dalam kondisi if di atas juga dapat diganti dengan r.Read() jika kita ingin mengecek ada atau tidaknya suatu data sekaligus membaca satu baris data dari database:
if (r.Read()) { Console.WriteLine("Data mahasiswa:"); Console.WriteLine(r[0]); //Kolom pertama: (index 0) Console.WriteLine(r[1]); //Kolom kedua:namalengkap (index 1) Console.WriteLine(r[2]); //Kolom ketiga:gender (index 2) Console.WriteLine(r["fakultas"]); //Dapat juga menggunakan nama kolom Console.WriteLine(((DateTime)r["tanggaldaftar"]).ToString("dd MMMM yyyy")); //Kode di atas langsung mengkonversi data menjadi DateTime, kemudian menjadi string. r.Close(); //Sebaiknya r (DataReader) ditutup setelah dipakai}
Dan apabila kita ingin membaca seluruh baris data yang ada pada DataReader, kita dapat mengganti if menjadi while. Dan jangan lupa untuk memindahkan perintah r.Close() keluar dari loop while:if (r.Read()) { Console.WriteLine("Data mahasiswa:"); Console.WriteLine(r[0]); //Kolom pertama: (index 0) Console.WriteLine(r[1]); //Kolom kedua:namalengkap (index 1) Console.WriteLine(r[2]); //Kolom ketiga:gender (index 2) Console.WriteLine(r["fakultas"]); //Dapat juga menggunakan nama kolom Console.WriteLine(((DateTime)r["tanggaldaftar"]).ToString("dd MMMM yyyy")); //Kode di atas langsung mengkonversi data menjadi DateTime, kemudian menjadi string.}r.Close(); //Sebaiknya r (DataReader) ditutup setelah dipakai
Kita juga dapat memindahkan semua baris data pada DataReader ke dalam suatu DataTable:
var conn = new MySqlConnection("Host=localhost;Uid=root;Pwd=123;Database=kampus");var cmd = new MySqlCommand("SELECT id, namalengkap, gender, fakultas, tanggaldaftar, updated FROM mahasiswa", conn);//Suatu DataTabel baru bernama TabelMahasiswavar dt = new DataTable("TabelMahasiswa");//Koneksi harus terbuka untuk menjalankan ExecuteReaderconn.Open();var r = cmd.ExecuteReader();//Baca semua baris data yang dapat diambil dari r ke dalam DataTable dtdt.Load(r);conn.Close();//Kita dapat menggunakan DataTable meskipun koneksi telah ditutup//Kapanpun kita mauforeach (DataRow baris in dt.Rows) { Console.WriteLine("Data mahasiswa:"); Console.WriteLine(baris[0]); //Kolom pertama:id (index 0) Console.WriteLine(baris["namalengkap"]); //Kolom kedua:namalengkap (index 1) Console.WriteLine(baris.Field<string>(2)); //Kolom ketiga: gender berupa string Console.WriteLine(baris.Field<string>("fakultas")); //Dapat juga menggunakan nama kolom Console.WriteLine(baris.Field<DateTime>("tanggaldaftar").ToString("dd MMMM yyyy")); //Baris di atas langsung mengkonversi data menjadi DateTime, kemudian menjadi string.}
Menggunakan DataAdapter
Menggunakan DataAdapterMenggunakan DataAdapter esbetulnya tidak terlalu berbeda dari contoh DataReader terakhir di atas. Satu kelebihan menggunakan DataAdapter adalah ia secara otomatis membuka dan menutup koneksi:var conn = new MySqlConnection("Host=localhost;Uid=root;Pwd=123;Database=kampus");var cmd = new MySqlCommand("SELECT id, namalengkap, gender, fakultas, tanggaldaftar, updated FROM mahasiswa", conn);var dt = new DataTable("TabelMahasiswa");//Buat suatu DataAdapter, dan langsung menugaskan cmd di atas sebagai SelectCommand-nyavar adap = new MySqlDataAdapter(cmd);//Baca semua baris dari perintah cmd ke dalam DataTableadap.Fill(dt);foreach (DataRow baris in dt.Rows) { Console.WriteLine("Data mahasiswa:"); Console.WriteLine(baris[0]); //Kolom pertama:id (index 0) Console.WriteLine(baris["namalengkap"]); //Kolom kedua:namalengkap (index 1) Console.WriteLine(baris.Field<string>(2)); //Kolom ketiga: gender berupa string Console.WriteLine(baris.Field<string>("fakultas")); //Dapat juga menggunakan nama kolom Console.WriteLine(baris.Field<DateTime>("tanggaldaftar").ToString("dd MMMM yyyy")); //Baris di atas langsung mengkonversi data menjadi DateTime, kemudian menjadi string.}
Perlu diketahui bahwa selain membaca data dengan method Fill di atas, DataAdapter juga dapat secara otomatis mengupdate baris-baris data yang berubah, menginsert baris-baris baru, dan menghapus baris-baris data yang telah dihapus. Atau dengan kata lain, perubahan yang terjadi pada DataTable dikirim juga secara otomatis ke database server. Semua itu dilakukan hanya dengan satu Method: Update. Akan tetapi penggunaan method tersebut tidak akan dibahas di sini.
0 komentar
Post a Comment