Selasa, 19 Agustus 2008

DataGrid dengan data dari MySQL menggunakan SharpDevelop 3.0

Terdapat 2 komponen library saat ini yang dapat digunakan untuk menggunakan database MySQL pada aplikasi C#, dari MySQL dengan Connector/NET-nya dan Mono dengan ByteFX-nya. Keduanya sama-sama mengikuti standar yang ada. Namun perbedaan keduanya setelah penulis menggunakannya, terdapat beberapa hal yang perlu menjadi perhatian disini :
Komponen MySQL.Data.dll belum mampu menangani tipe data DateTime dengan baik, karena masih menggunakan komponen MySqlDateTime sendiri. Terutama pada waktu informasi DataTime dari tabel menunjukkan nilai '0000-00-00'. ini dapat ditangani dengan baik oleh ByteFX.Data.dll yang akan mengkonversi nilai '0000-00-00' menjadi string kosong "".

Manajemen pooling yang lebih baik ditunjukkan oleh ByteFX.Data.dll dengan ditutupnya pooling saat aplikasi Desktop berhasil ditutup.

Error yang diberikan oleh aplikasi saat oleh komponen Mysql.Data.dll

System.Transactions Critical: 0 : http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/UnhandledUnhandled exceptionKMHDI_DB2008.exeSystem.Threading.SemaphoreFullException, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089Adding the given count to the semaphore would cause it to exceed its maximum count. at System.Threading.Semaphore.Release(Int32 releaseCount)
at System.Threading.Semaphore.Release()
at MySql.Data.MySqlClient.MySqlPool.RemoveConnection(Driver driver)
at MySql.Data.MySqlClient.MySqlPoolManager.RemoveConnection(Driver driver)
at MySql.Data.MySqlClient.NativeDriver.Dispose(Boolean disposing)
at MySql.Data.MySqlClient.Driver.Close()
at MySql.Data.MySqlClient.NativeDriver.Finalize()
System.Threading.SemaphoreFullException: Adding the given count to the semaphore would cause it to exceed its maximum count.
at System.Threading.Semaphore.Release(Int32 releaseCount)
at System.Threading.Semaphore.Release()
at MySql.Data.MySqlClient.MySqlPool.RemoveConnection(Driver driver)
at MySql.Data.MySqlClient.MySqlPoolManager.RemoveConnection(Driver driver)
at MySql.Data.MySqlClient.NativeDriver.Dispose(Boolean disposing)
at MySql.Data.MySqlClient.Driver.Close()
at MySql.Data.MySqlClient.NativeDriver.Finalize()


Pada saat pengujian ini komponen Mysql.Data.dll yang digunakan versi 5.1.6.0 sedangkan ByteFX.Data.dll versi 0.7.6.2.

untuk mengisi DataGrid terdapat beberapa komponen yang dapat digunakan :
- MySqlConnection
- MySqlCommand
- MySqlDataAdapter
- MySqlCommandBuilder
- DataSet
- DataGrid

langkah-langkah yang perlu dilakukan :
1. menambahkan library MySql.Data.dll dari MySQL Connector/NET atau dapat menggunakan komponen ByteFX.Data.dll dari Mono.
2. Menambahkan semua obyek yang diperlukan
3. mengatur properti MySqlConnection
ConnectionString :
contoh :
server=localhost;userid=root;password=rootpwd;database=test

4. mengatur properti MySqlCommand
- Connection : di set pada obyek dari MySqlConnection
- CommandText : isikan dengan query sql SELECT yang akan dijalankan

5. mengatur properti MySqlDataAdapter
SelectCommand : isikan dengan obyek dari MySqlCommand

6. mengatur properti MySqlCommandBuilder
DataAdapter : isikan denga obyek dari MySqlDataAdapter

7. mengatur properti DataGrid
DataSource : isikan dengan obyek dari DataSet

8. pada event Load dari form tambahkan beberapa baris perintah ini :

// membuka koneksi ke mysql
mySqlConnection1.Open();

// mengisi dataset dengan data hasil eksekusi query
mySqlDataAdapter1.Fill(dataSet1, "telp");

// menampilkan hasil query pada datagrid
dataGrid1.DataMember = "telp";

// menutup koneksi mysql
mySqlConnection1.Close();


9. Tekan F5 (Run Project) Untuk milihat hasilnya.

Tidak ada komentar :

Posting Komentar