پر کردن DataGridView با استفاده از DataTable :
در زمان ارتباط با دیتابیس به موقع بستن اتصال امری حیاتی می باشد و احتمال از دست دادن اطلاعات را کاهش می دهد .در مثال امروز من سعی کرده ام کدی برای شما آماده کنم که بتوانیم اطلاعات را با استفاده از DataReader خوانده و به یک DataTable تبدیل کرده و به یک DataGridView متصل کنیم و در آن با استفاده از بستن اتوماتیک اتصال استفاده شده تا بعد از خواندن اطلاعات مورد نظر اتصال بسته شود .
ابتدا یک DataGridView را به فرم اضافه کرده و نام آن را dtGridView می گذاریم و بعد تنظیمات فایل پیکره بندی app.config را بصورت زیر انجام می دهیم (فراموش نکنید که برای خواند از فایل پیکره بندی باید اسمبلی System.Confugration را به پروژه اضافه کنیم)
xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings >
<add name="ConnectionSource" connectionString="server=(local);Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI"/>
connectionStrings>
<appSettings >
<add key ="querySelect" value ="SELECT * FROM "/>
<add key ="TableName" value ="Customers"/>
appSettings>
configuration>
و بعد با استفاده از کلاس زیر اطلاعات فایل app.config را می خوانیم :
class loginAppConfiguration
{
public static string SourceConnectionString
{
get
{
return
System.Configuration.ConfigurationManager.ConnectionStrings[
"ConnectionSource" ].ConnectionString;
}
}
public static string TableName
{
get
{
return
System.Configuration.ConfigurationManager.AppSettings[ "TableName" ];
}
}
public static string queryString
{
get
{
return
System.Configuration.ConfigurationManager.AppSettings[ "querySelect" ];
}
}
}
و بعد با استفاده از متد زیر اطلاعات را خوانده و به DataGridView اضافه می کنیم :
private void loadingForm( )
{
System.Data.SqlClient.SqlConnection dtConnection =
new System.Data.SqlClient.SqlConnection( loginAppConfiguration.SourceConnectionString );
string querySQL =
loginAppConfiguration.queryString + loginAppConfiguration.TableName;
System.Data.SqlClient.SqlCommand dtCommand =
new System.Data.SqlClient.SqlCommand( querySQL , dtConnection );
if ( dtConnection.State != System.Data.ConnectionState.Open )
{
dtConnection.Open( );
}
System.Data.SqlClient.SqlDataReader dtReader =
dtCommand.ExecuteReader(
System.Data.CommandBehavior.CloseConnection );
System.Data.DataTable dtTable = new System.Data.DataTable( );
dtTable.Load( dtReader );
dtGridView.DataSource = dtTable;
System.Windows.Forms.MessageBox.Show(
"Connection State : " + dtConnection.State.ToString( ) );
}
در این متد ابتدا یک کانکشن را تعریف کرده ایم و با استفاده از کلاس logionAppConfiguration سورس کانکشن را از فایل app.config به آن اضافه می کنیم ، در ادامه یک متغییر را از نوع string تعریف کرده و کوئری و نام جدول را از با استفاده از کلاس logionAppConfiguration به آن ست می کنیم ، در ادامه یک متغییر از نوع SqlCommand تعریف کرده و کوئری و کانکشنی که باید از آن استفاده کند را نیز برای آن معرفی می کنیم ، بعد با استفاده از دستور شرطی if باز بودن کانکشن را چک می کنیم (برای هدر نرفتن منابع سیستم بهتر است باز بودن کانکشن را چک کنید و در صورت عدم اتصال آنرا باز کنیم ) و در صورت باز نبودن آن کانکت می شوییم ، در ادامه یک متغییر از نوع SqlDataReader برای خواندن اطلاعات از دیتابیس تعریف می کنیم و با استفاده متد ایستا از متغییر SqlCommand بنام ExecuteReader اطلاعات را به آن اضافه می کنیم و نکته قابل توجه این است که در اینجا بسته شدن اتصال را بعد از پایان بار گذاری اطلاعات در SqlDataReader را تنظیم می کنیم با استفاده از کد زیر :
System.Data.CommandBehavior.CloseConnection ، و بعد یک آبجکت از نوع DataTable تعریف کرده و با استفاده از خاصیت Load آن SqlDataReader را به آن تبدیل (Convert) می کنیم و در انتها با استفاده از DataSource کنترول DataGridView اطلاعات خوانده شده از جدول را در آن بار گذاری می کنیم .
و در انتها با استفاده از یک کادر پیام خاصیت State کانکشن را چک می کنیم و کاملا واضح است که اتصال به دیتابیس بصورت اتوماتیک بعد از خواندن اطلاعات بسته شده است .