منوی اصلی

 

موضوعات

 
کار با SqlDataReader و نمایش اطلاعات در DataGrid

قسمت سوم

در ادامه به شیوه استفاده از SqlDataReader در C#.Net میپردازیم . این کار را با یک مثال اغاز میکنیم . اینک این تابع را به کلاس اولیه اضافه کنید .

public Boolean showdata(System.Windows.Forms.DataGridView DataGridShow)
{
Boolean Flag = false;
try
{
DataGridShow.Rows.Clear();
SqlConnection iConnection = new SqlConnection(SqlConString);
SqlCommand iCommand;
iConnection.Open();
iCommand = new SqlCommand(" select * from TblTest ", iConnection);
SqlDataReader iReader = iCommand.ExecuteReader();
ArrayList iList = new ArrayList();
if (iReader.HasRows)
{
while (iReader.Read())
{
string[] iRow = new string[] { iReader["name"].ToString()};
iList.Add(iRow);
}
foreach (string[] rowArray in iList) DataGridShow.Rows.Add(rowArray);
iReader.Close();
}
iConnection.Close();
Flag = true;
}
catch
{
Flag = false;
}
return Flag;
}


در اینجا ما یک متغیر را برای کار با SqlDataReader تعریف کردیم SqlDataReader iReader سپس با دستور iCommand.ExecuteReader دستور را اجرا کرده و نتیجه را در iReader قرار میدهیم . با دستور if (iReader.HasRows) بررسی کردیم اگر اطلاعاتی درون iReader بود وارد شرط بعدی شود در صورتی که اطلاعاتی درون ان نباشد این شرط اجرا نمیشود . در خط بعد با استفاده از دستور

while (iReader.Read())

محتویات iReader را پیمایش میکنیم . محتویات را درون یک ارایه قرار میدهیم .

string[] iRow = new string[] { iReader["name"].ToString()};

با این کار یک ارایه یک بعدی تعریف میشود که فقط خانه شماره 1 ان دارای مقادیر میباشد . و فیلد name را از iReader درون ان قرار میدهیم . و پس از پایان پذیرفتن شرط while ما اطلاعات را درون DataGridView قرار دادیم . برای این کار کافی است که با استفاده از دستور

foreach (string[] rowArray in iList) DataGridShow.Rows.Add(rowArray);


با این کار ما با پیمایش ArrayList در دستور فوق این ارایه را در DataGridShow اضافه کردیم . این روش اول میباشد . روش دوم به شکل زیر است . کافی است که برای ان یک تابع بنویسیم . پس کد های زیر را در کلاس مورد نظر کپی کنید . برای این روش ما از SqlDataAdapter استفاده میکنیم

public void Showdata(DataGridView DataGridMe)
{
string Comand = "select * from tbltest";
SqlConnection Con = new SqlConnection();
Con.ConnectionString = SqlConString;
SqlDataAdapter adabter = new SqlDataAdapter();
DataSet datas = new DataSet();
adabter.SelectCommand = new SqlCommand();
adabter.SelectCommand.Connection = Con;
adabter.SelectCommand.CommandText = Comand;
adabter.SelectCommand.CommandType = CommandType.Text;
Con.Open();
adabter.Fill(datas, TableName);
Con.Close();
DataGridMe.DataSource = datas.Tables[TableName];
}

با دستور

SqlDataAdapter adabter = new SqlDataAdapter();

یک متغیر از نوع SqlDataAdapter میسازیم . چون اطلاعات بازگشتی از نوع DataSet میباشند ما یک متغر نیز برای این کار ساختیم . در خط بعدی ما یک SqlCommand جدید برای کار تعریف کردیم

adabter.SelectCommand = new SqlCommand();

و در خطوط بعدی نیز SqlConnection را به adabter نصبت دادیم و دستور SQl را به ان دادیم و نوع ان را نیزCommandType.Text قرار دادیم . انگاه با دستور

adabter.Fill(datas, TableName);

دستورات SQl را اجرا میکنیم . حالا datas ما که در دستور adabter.Fill مقدار دهی شده و از اطلاعات پر شده را به دستور زیر به DataGridMe انتصاب میدهیم .

DataGridMe.DataSource = datas.Tables[TableName];


TableName ما نام جدول در بانک میباشد .

تعداد بازدید : 137 |   نوشتده شده توسط admin در تاریخ 1388/05/15 در ساعت 14:20


امار سایت

 
Maftoox . ltd Free Software ® . Copyright © 2007-2010 Maftoox.Ltd
Powerd By : M.Maftooh    Cms By : Maftoox Engine 2.0.1