PDA

View Full Version : انتقال اطلاعات به صورت generic در برنامه نویسی 3لایه



mohsen_zelzela00
شنبه 13 تیر 1388, 11:42 صبح
با سلام خدمت اساتید محترم
من یک struct با 2 فیلد دارم به صورت زیر



publicstructLoginInfo
{
privateBoolean Stat;
privateBoolean Admin;
}



و بعد از آن یک متد به صورت زیر






publicList<LoginInfo> Logion(string UserName,string Password)
{
OleDbConnection con = newOleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\E-Commerce.accdb");
string cmd = "select * from Login where UserName=@Username and Password=@Password";
OleDbDataAdapter Da=newOleDbDataAdapter(cmd,con);
Da.SelectCommand.Parameters.AddWithValue("@UserName", Username);
Da.SelectCommand.Parameters.AddWithValue("@Password", Password);


میخواهم با استفاده از generic ها خروجی این متد من ساختاری مثل struct بالا باشه
من در ادامه کد متد خودم باید چه کدی بنویسم

ممنون میشم دوستان عزیز کمکم کنند.......

mohsen_zelzela00
شنبه 13 تیر 1388, 18:36 عصر
دوستان کسی نمیتونه راهنماییم کنه

Behrouz_Rad
شنبه 13 تیر 1388, 18:51 عصر
از struct استفاده نکن.
هر موجودیت باید یک کلاس داشته باشه.
داده ها رو در DataReader بریز و با while در DataReader حرکت و از کلاس، new و به اعضای اون مقداردهی و به List اضافه کن.

موفق باشید.

mohsen_zelzela00
شنبه 13 تیر 1388, 20:58 عصر
از struct استفاده نکن.
هر موجودیت باید یک کلاس داشته باشه.
داده ها رو در DataReader بریز و با while در DataReader حرکت و از کلاس، new و به اعضای اون مقداردهی و به List اضافه کن.

موفق باشید.
استاد خیلی جالب توضیح دادید ولی باور کنید سواد ما در این حد نیست من پروزهdatagride شما رو نگاه کردم ولی حقیقتش بازم چیزه زیادی متوجه نشدم چون هنوز چیزه زیادی از برنامه نویسی 3 لایه و generic ها نمی دونمو در این پروژه که دارم انجام میدم سعی میکنم که اینها رو یاد بگیرم ممنون میشم یه مثال کوچک بزنید....

RED-C0DE
شنبه 13 تیر 1388, 23:04 عصر
مثلا می تونی ب اینصورت بنویسی :
(فقط اینکه کامپایلش نکردم)


publicList<LoginInfo> Logion(string UserName,string Password)
{
List<LoginInfo> retList=new List<LoginInfo>();

OleDbConnection con = newOleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\E-Commerce.accdb");
string cmd = "select * from Login where UserName=@Username and Password=@Password";

OledbDataReader dr=null;

try
{
con.Open();

cmd.ExecuteReader(CommandBehaviour.CloseConnection );
if(dr.HasValue)
{
while(dr.Read())
{
LoginInfo objLoginInfo= new LoginInfo(dr[0].ToString() , dr[1].ToString());
retList.Add(objLoginInfo);
}
}
}
catch(Exception ex)
{
//...
}
finally
{
if(dr != null)
dr.Close();
}

return retList;
}

mohsen_zelzela00
شنبه 13 تیر 1388, 23:42 عصر
مثلا می تونی ب اینصورت بنویسی :
(فقط اینکه کامپایلش نکردم)


publicList<LoginInfo> Logion(string UserName,string Password)
{
List<LoginInfo> retList=new List<LoginInfo>();

OleDbConnection con = newOleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\E-Commerce.accdb");
string cmd = "select * from Login where UserName=@Username and Password=@Password";

OledbDataReader dr=null;

try
{
con.Open();

cmd.ExecuteReader(CommandBehaviour.CloseConnection );
if(dr.HasValue)
{
while(dr.Read())
{
LoginInfo objLoginInfo= new LoginInfo(dr[0].ToString() , dr[1].ToString());
retList.Add(objLoginInfo);
}
}
}
catch(Exception ex)
{
//...
}
finally
{
if(dr != null)
dr.Close();
}

return retList;
}


پس از این به بعد به جای استفاده از struct از یک کلاس به نام LoginInfo استفاده کنم درسته(با توجه به فرمایشات استاد راد)؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

RED-C0DE
یک شنبه 14 تیر 1388, 00:53 صبح
فرقی نداره..معمولش استفاده از کلاس است ولی در اینجا همین استراکت هم کار شما رو راه میندازه..