LINQ Bagian 1: Mengenal LINQ dan penerapannya pada Array, Xml dan Sql [Halaman Ini]
LINQ Bagian 2: Mengenal LINQ dan penerapannya pada ArrayList, Strings, File Directories, dan Reflection [Click di sini]
LINQ Bagian 3: Mengenal LINQ dan penerapannya pada Dataset [Click disini]
LINQ Bagian 4: Mengenal LINQ dan penerapannya pada Entities [Belum]
Apa itu LINQ? LINQ merupakan kependekan dari Language Integrated Query. Sesuai dengan kepanjangan tersebut, dapat kita artikan LINQ merupakan “Query yang terintegrasi pada Bahasa Pemrograman”. Integrasi Query dalam hal ini tidak hanya pada bahasa C#, tapi juga Visual Basic, maupun bahasa lain yang terintegrasi dalam framework .NET.
Kemudian apa itu query? Query merupakan sintaks atau kode atau perintah – perintah yang berhubungan dengan “Data”.
“Data” ini bisa diambil dari DATA SOURCE yang bisa berupa “Sql Database”, Arrays”, “Collections”, “Relational Data”, dan “XML”.
Ada banyak cara untuk mengambil data dari DATA SOURCE, salah satu cara yang banyak digunakan adalah dengan penerapan LINQ.
Lalu, apa keunggulan manipulasi data menggunakan LINQ?
LINQ berhubungan dengan DATA. Pada tutorial ADO.NET sebelumnya VISUAL C# No.39: Penerapan OleDb dan SQL SERVER pada DataGridView (ADO.NET SERI 1), kita menggunakan sintaks seperti berikut ini untuk memanggil data dari database SQLSERVER dan menampilkan nya pada DataGridview di layar:
Anda bisa lihat, rumit bukan untuk programmer ADO.NET? Pada kode di atas terlebih dahulu kita membuat Connection, kemudian membuat Command, membuat SqlDataAdabter, bahkan bisa juga menggunakan DataReader baru kemudian membuat Table dan menampilkannya pada DataGridView. Tidak hanya kode yang dibuat bisa sangat banyak tapi juga compiler tidak bisa mengecek atau mendebug query tersebut.
Nah, akan jauh berbeda bila kita menggunakan LINQ.
Dengan menggunakan LINQ kita akan mendapatkan keunggulan seperti berikut ini:
1.LINQ terintegrasi otomatis pada bahasa pemrograman, dalam hal ini adalah C# dan Visual Basic sehingga memiliki sintaks highlinghting dan intellisense bahkan kita bisa mendebug query kita dengan debugger yang sudah terintegrasi dengan Visual Studio.
2.Penggunaan kode jauh lebih simple dan lebih cepat dibandingkan dengan cara lama seperti pada tutorial ADO.NET kita di atas.
3.Dengan menggunakan LINQ, kita bisa dengan mudah melihat hubungan antar table, bahkan kita bisa dengan mudah membuat query untuk menggabungkan beberapa table.
4.Transformasi data jauh lebih mudah, misalnya kita bisa meng-convert Sql data kedalam XML data.
5.Dan lain – lain.
Sesuai dengan Visual Studio 2013 Documentation, penggunaan LINQ, dalam bahasa pemrograman apapun, memiliki 3 (tiga) DISTINCT ACTIONS:
A.Tentukan DataSource
B.Buat Query
C.Eksekusi Query
Nah, hanya 3 (tiga) ini saja operasi dalam LINQ. Mari kita praktekan!
1.LINQ TO ARRAY
Contoh kode berikut ini:
Pastikan anda telah menuliskan/mendeklarasikan/meloading namespace:
using System.Linq;
Namespace di atas inilah yang nantinya selalu kita gunakan untuk bermain – main dengan LinQ. :)
Anda bisa lihat, kita betul - betul menerapkan 3 (tiga) distinc action pada kode di atas. Sebagai datasource adalah array. Kemudian kita membuat sintaks query, inti dari sintaks query ini adalah kita mengambil nilai dari array yang habis bila di bagi dengan bilangan 2 (dua). Tanda % merupakan modulus.
Hasil dari kode diatas adalah seperti berikut ini, perhatikan, semua hasil yang muncul adalah bilangan yang habis dibagi 2.
Lihat gambar 1:
Mudah dipelajari bukan untuk Linq to Array ini?
2.LINQ TO XML
Pada bagian ini kita akan membuat sebuah datasource yang berupa xml file. Nah, dalam datasource ini kita umpamakan saja bahwa kita memiliki data dari siswa di suatu sekolah dalam bentu xml.
Perhatikan kode berikut ini, yang merupakan XML dari data siswa yang sudah kita buat:
Sementara kode berikutnya adalah main method kita pada C#:
Pada kode di atas, kita mendeklarasikan/menuliskan dua buah namespace yang berperan penting dalam LinQ dan XML:
using System.Linq;
using System.Xml.Linq;
Untuk Namespace ‘System.Linq’ telah jelas, sedangkan namespace ‘System.Xml.Linq’ adalah sebuah namespace yang didalamnya terkandung class yang digunakan untuk interaksi Linq dengan Xml.
Dengan menggunakan class dari Namespace ini, kita bisa gunakan untuk:
•Load XML from files or streams.
•Serialize XML to files or streams.
•Create XML trees from scratch using functional construction.
•Query XML trees using LINQ queries.
•Manipulate in-memory XML trees.
•Validate XML trees using XSD.
•Use a combination of these features to transform XML trees from one shape into another.
(Diambil dari Visual Studio 2013 Documentation)
Anda bisa melihat, kita menggunakan class ‘XElement’. Ingat, ‘XElement’ bukan ‘XmlElement’. :)
Untuk memanggil XElement ini kita harus meloading namespace ‘System.Xml.Linq’ terlebih dahulu.
Class ini (XElement) , merupakan class yang mewakili Xml Element.
Hasil dari kode di atas adalah seperti berikut ini,
Lihat gambar 2:
Alangkah baiknya kalo sebelum berlanjut, terlebih dahulu kita menyinggu sedikit tentang XElement ini ,
Class XElement memiliki banyak Method dan Properties. Berikut merupakan contoh code dari XElement, perhatikan dan cobalah untuk ‘membaca’ kode nya:
Hasil dari kode diatas adalah seperti pada screenshot berikut ini:
Lihat gambar 3:
Sintaks constructor dari XElement yang kita gunakan pada kode di atas adalah:
new XElement(XName, Object);
Penerapannya:
new XElement("Child1", 1);
Akan menghasilkan:
<child1>1</Child1>
Mudah bukan?
------------------------------------------------------
Sehingga sebetulnya kode berikut ini,
XElement xmlTree1 = new XElement("Root",
new XElement("Child1", 1),
new XElement("Child2", 2),
new XElement("Child3", 3),
new XElement("Child4", 4),
new XElement("Child5", 5),
new XElement("Child6", 6)
);
Akan menghasilkan XML file seperti berikut ini,
<root>
<child1>1</Child1>
<child2>2</Child2>
<child3>3</Child3>
<child4>4</Child4>
<child5>5</Child5>
<child5>6</Child5>
</Root>
Sangat mudah bukan?? Mari kita lanjut ke penerapan LinQ Berikutnya.
3.LINQ TO SQL
Linq to Sql adalah komponen dari .NET versi 3.5 keatas (saat tutorial ini ditulis, versi terbaru adalah 4.5.2). Ketika aplikasi running, LINQ TO SQL akan men-translate kedalam SQL dan kemudian mengirimkannya kedalam database untuk dieksekusi. Ketika database berhasil mengeksekusi dan mengembalikan hasil eksekusi, maka data hasil eksekusi ini akan diubah kembali kedalam bentuk object yang dapat anda olah sesuai bahasa pemrograman yang anda gunakan.
Bila anda menggunakan Visual Studio, anda bisa memanfaatkan ‘Object Relational Designer’ tool yang bisa menyedian UI (User Interface) untuk LINQ TO SQL.
Dengan menggunakan LINQ TO SQL, kita bisa menggunakan LINQ Technology untuk mengakses SQL Database semudah mengakses memory data :)
Mari kita mencoba untuk mempraktekan.
*Pastikan anda sudah mengerti tentang SQL Server (disini kita menggunakan SQL Server Express). Disini kita akan membuat sebuah Portable Database File (.mdf), bila anda belum mengerti tentang SQL Server Express atau belum mengerti tentang .MDF file, silahkan buka tutorial berikut ini:
VISUAL C# No.39: Penerapan OleDb dan SQL SERVER pada DataGridView (ADO.NET SERI 1)
VISUAL C# No.37: Sql Compact Edition (CE) deprecated/tidak dikembangkan lagi
VISUAL C# No.38: Praktek Membuat Aplikasi dengan SQL EXPRESS LocalDb
Mari kita lanjut,,,,,
Untuk membuat LINQ TO SQL, kita menggunakan LINQ TO SQL Class. Ini merupakan Class yang telah disediakan oleh Visual Studio untuk mempermudah pengerjaan.
Untuk lebih jelasnya, mari kita mempraktekan penggunaan class ‘Linq To Sql’.
Langkah 1: Buatlah sebuah project C# baru,pada tutorial ini saya membuat sebuah ‘Console Application’ dengan nama ‘ProjectLinqToSql’.
Langkah 2: Tambahkan Class ‘Linq To Sql Class’ ke dalam project.
Klik Kanan Project --> Add --> New Item... --> pilih ‘LINQ To SQL Classes’.
Pada tutorial ini saya berikan nama untuk LINQ To SQL Classes dengan ‘DataClassKita.dbml’.
Lihat gambar 4:
Saat kita click OK, maka secara otomatis Visual Studio akan meloading beberapa Namespace yang diperlukan untuk pengerjaan ini.
Lihat gambar 5:
Langkah 3: Mari kita membuat database file nya.
Pada tutorial ini, saya membuat file database .MDF dengan nama DatabaseSiswa.mdf.
Caranya:
Klik kanan project kita tadi di Solution Explorer (ProjectLinqToSql) --> Add --> New Item... --> Pilih Service Base Database, Berikan nama ‘DatabaseSiswa.mdf’.
Lihat gambar 6:
Setiap database file yang kita buat di Solution Explorer, akan bisa anda lihat di Server Explorer.
Langkah 5: Mari kita membuat table ‘TabelSiswa’
Caranya:
Buka server explorer --> Koneksikan Database File kita yang belum terkoneksi tadi (klik kanan database file --> Refresh Connection).
Lihat gambar 7:
Setelah terkoneksi, buatlah sebuah table, seperti terlihat pada screenshot berikut ini:
Lihat gambar 8:
Saat kita klik add new table, secara default, visual studio akan membuat kode seperti berikut ini:
CREATE TABLE [dbo].[Table]
(
[Id] INT NOT NULL PRIMARY KEY
)
Nah, kita ganti aja dengan nama tabel yang sesuai dengan kehendak kita, disini saya membuat nama tabel adalah TabelSiswa (Ejaan Bahasa Indonesia lho).
CREATE TABLE [dbo].[TabelSiswa]
(
[Id] INT NOT NULL PRIMARY KEY
)
Lihat gambar 9:
Setelah melakukan perubahan jangan lupa untuk click update pada table design tersebut.
Langkah 6: Mari kita isi table ‘TabelSiswa’ dengan beberapa row.
Caranya:
Disini saya akan menambah kan row ‘Id’, ‘Nama’, ‘Alamat’.
Klik kanan table ‘TabelSiswa’ yang baru saja kita buat di Server Explorer --> Pilih Open Table Definition.
Lihat gambar 10:
Kemudian, pada Table Definition, kita bisa menambahkan beberapa row seperti Id, Nama, Alamat, khusus untuk Nama dan Alamat, saya memilih Data Type nya text saja . Jangan lupa click Update setelah menambahkan row.
Lihat gambar 11:
Langkah 7: Mari kita isi data – data siswa pada row yang telah kita buat.
Caranya:
Klik kanan table ‘TabelSiswa’ yang baru saja kita buat di Server Explorer --> Pilih Show Table Data.
Lihat gambar 12:
Silahkan anda tambahkan data anda sesuka hati.
Langkah 8: Buat interaksi antara LINQ TO SQL Classes dengan Database.
Caranya:
Drag n Drop table ‘TabelSiswa’ ke dalam file .dbml kita tadi (DataClassKita.dbml). Drag and Drop ini akan membuat sebuah DataContext yang nantinya dapat kita gunakan untuk interaksi dengan LINQ TO SQL Classes.
Lihat gambar 13:
Langkah 9: mari kita terapkan 3 DISTINCT ACTIONS seperti pada bab – bab di atas bab ini :)
Caranya:
Kembali ke Program.cs, ketikan kode seperti berikut ini:
Pada kode di atas, terlebih dahulu kita membuat sebuah DataSource, yaitu sebuah DataContext dari table ‘TabelSiswa’. DataContext ini tidak akan muncul sebelum anda drag and drop table ‘TabelSiswa’ ke dalam Table Relational Designer (.dbml) tadi.
Kode berikutnya, kita membuat sebuah Query. Kemudian yang terakhir adalah mengeksekusi query. Mudah bukan??
Kode di atas hanya baru meloading data saja, belum menghapus dan menyimpan data. Kita akan membahas lebih dalam pada tutorial berikutnya.
Nah, akhirnya cukup sekian tutorial bagian pertama (1).
Semoga bermanfaat, jangan lupa tunggu tutorial bagian berikutnya.
Salam,