PDA

View Full Version : این خط کد چیکار میکنه یه توضیح کامل میخام



RIG000
چهارشنبه 09 تیر 1389, 13:38 عصر
راستش یه چیزهایی میدونم اما بیشتر بدنم خیلی بهتر هست یه توضیح خط به خط بدین . ممنونم


public static void FindNumberORpassWord(string Etesal, string StrSql)
{
OleDbConnection con = new OleDbConnection(Etesal);
con.Open();
OleDbCommand cmd = new OleDbCommand(StrSql, con);
OleDbDataReader dr = cmd.ExecuteReader();
object[] Obj = new object[1];
while (dr.Read())
{
dr.GetValues(Obj);
}
LastNumber = Obj[0].ToString();
PassWord = Obj[0].ToString();
con.Close();
}

salehbagheri
چهارشنبه 09 تیر 1389, 14:45 عصر
این یک نمونه کد بسیار بدبو برای استخراج یه مقدار از Database هست!

در این کد منظور شخص از Etesal در واقع ConnectionString بوده و همینطور StrSql در واقع همون دستورات SQL هست.

ایشون مقداری رو از Database فراخوانی میکنند و در متغیر Obj قرار میدهند و سپس این مقدار را به صورت رشته به دو متغیر LastNumber و PassWord نسبت میدهند.

RIG000
چهارشنبه 09 تیر 1389, 15:17 عصر
چرا حالا بد بو .؟
دستت درد نکنه . مهندس .

RIG000
چهارشنبه 09 تیر 1389, 15:21 عصر
OleDbDataReader dr = cmd.ExecuteReader();
object[] Obj = newobject[1];
while (dr.Read())
{
dr.GetValues(Obj);
}
LastNumber = Obj[0].ToString();
PassWord = Obj[0].ToString();
مشکل اصلی من اینجاست object چیکار میکنه getvalue ئ, reader و .... یه توضیح مبتدیانه بدین لطفا" (یعنی ما رو خیلی مبتدی فرض بگیرین)

salehbagheri
چهارشنبه 09 تیر 1389, 18:38 عصر
در مورد Object !
جداول شما معمولا چندین ستون دارند و هر ستون هم از یک نوع خاص در نظر گرفته شده (مثل رشته، تاریخ، عدد)
بنابراین هنگام فراخوانی یک داده عددی اگه نوع متغیر رو رشته ای در نظر بگیرید به مشکل میخورید! بنابراین مجبورید که object در نظر بگیرید. همچین متد GetValues ورودی از نوع object می پذیرد ...
برای راحتی در تفکیک اطلاعات باید متغیر Object رو آرایه ای تعریف کنید.

در مورد GetValues!

این متد سطری را که DataReader میخواند وارد متغیر ورودی میکند. مثلاً در کد زیر:


object[] obj = new object[1];
while (Dr.Read())
{
Dr.GetValues(obj);
}


ابتدا متغیر obj یک خانه ای ایجاد میگردد!
سپس با استفاده از حلقه while سطر به سطر، عمل خواندن DataReader کنترل میشود.
و هر سطری که خوانده میشود وارد obj میشود و سطر بعدی جایگزین آن. چون متد GetValues فقط یک سطر را میتواند وارد obj کند بنابراین متغیر obj فقط مقدار آخرین سطر را در خود ذخیره دارد.
چون متغیر obj تک خانه ای هست فقط مقدار ستون اول وارد متغیر میشود.

سپس این مقدار را به دو متغیر دیگر یعنی LastName و PassWord نسبت میدهد.

پی نوشت: این روش فقط برای خواندن یک سطر از جدول مناسبه!