PDA

View Full Version : ارسال پارامتر در لايه DAL



mf_007
یک شنبه 23 اسفند 1388, 13:28 عصر
من تازه كار هستم
براي insert كردن در لايه DAL از كد زير استفاده مي كنم



publicvoid inserttodb(string name,string family,int id)
{
using (conn = newSqlConnection(strconn))
{
conn.Open();
SqlCommand cmd = newSqlCommand("stuinsert", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@name", SqlDbType.NChar).Value = name;
cmd.Parameters.Add("@family", SqlDbType.NChar).Value = family;
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
cmd.ExecuteNonQuery();
conn.Close();
}
}


ولي اين كد مشكل داره مثلا اگر تعداد فيلدهاي جدول ما 20 تا باشه تابع ما بايد 20 تا ورودي داشته باشه و به نظر من اينجور كدنويسي صحيح نيست
يكي از دوستان گفت كه مي شه از array list استفاده كرد.ميشه در اين مورد توضيح بديد
و كد مورد نظر رو بزاريد
اگه راه بهتري وجود داره لطفا توضيح بديد

M.YasPro
یک شنبه 23 اسفند 1388, 13:50 عصر
سلام
اگه میخوای یه مجموعه ای از ابجکت ها رو از یه جایی به یه جای دیگه بفرستی از جنریک لیست ها استفاده کن .

mf_007
یک شنبه 23 اسفند 1388, 13:59 عصر
سلام
اگه میخوای یه مجموعه ای از ابجکت ها رو از یه جایی به یه جای دیگه بفرستی از جنریک لیست ها استفاده کن .

همونطور كه گفتم من تازه كارم ميشه يكم در اين مورد توضيح بديد؟

M.Fekri
یک شنبه 23 اسفند 1388, 14:04 عصر
یک کلاس در نظر بگیر به اسم Parameter بعد 3تا Property به نامهای Name,Type,Value در نظر بگیر و یک collection(Property) را به عنوان آرگومان بگیر , داخل بدنه function ,loop بزن

mrmr68
یک شنبه 23 اسفند 1388, 14:35 عصر
خوب کد این رو که گفتین مشه بنویسین
خیلی ممنون عزیز

M.YasPro
یک شنبه 23 اسفند 1388, 14:48 عصر
اگر شما یه کلاس داشته باشی به نام person با فیلد های id,name,family با این کد


using System;
using System.Collections.Generic;
using System.Text;

namespace test
{
public class person
{
int id;
string name;
string family;

public string Family
{
get { return family; }
set { family = value; }
}

public string Name
{
get { return name; }
set { name = value; }
}

public int Id
{
get { return id; }
set { id = value; }
}
}
}


شما برای ساختن نمونه از این کلاس باید به صورت زیر عمل کنی :


person p = newperson();


حالا اگه یه لیست از این ابجکت بسازی میتونی اینطور بنویسی :



List<person> Persons = new List<person>();


که اینطوری به هر کدوم از ابجکت های این مجموعه میتونی دسترسی داشته باشی :



Persons[1]

در ضمن لیست ها نسبت به ارایه ها مزیت های بسیاری دارند
http://barnamenevis.org/forum/archive/index.php/t-144694.html

سوالی بود بفرمایید .

موفق باشید.

mf_007
یک شنبه 23 اسفند 1388, 16:19 عصر
من درست متوجه نشدم.
اين كلاس person تو كدوم لايه هست؟لايه dal يا bll?

الان اگه من بخوام سه تا textbox كه در لايه نمايش وجود داره رو مقاديرشون رو در جدول در فيلدهاي name,family, idذخيره كنم كدش چي ميشه؟

M.YasPro
یک شنبه 23 اسفند 1388, 17:29 عصر
این تو لایه common هست .


person p =new person();
p.name=txtName.text;
p.family=txtFamily.text

new personData().Insert(p);

mf_007
یک شنبه 23 اسفند 1388, 18:15 عصر
با تشكر از M.YasPro


یک کلاس در نظر بگیر به اسم Parameter بعد 3تا Property به نامهای Name,Type,Value در نظر بگیر و یک collection(Property) را به عنوان آرگومان بگیر , داخل بدنه function ,loop بزن

ميشه شما هم در مورد روشت يه توضيح بدي و كدش رو بزاري

FastCode
دوشنبه 24 اسفند 1388, 00:13 صبح
تا اونجایی که من میدونم همین روش 10 برابر از روشهای دیگه سریعتره.چون پارامتر ها توی stack ذخیره میشن و box و unbox نمیشن.

mf_007
دوشنبه 24 اسفند 1388, 12:07 عصر
تا اونجایی که من میدونم همین روش 10 برابر از روشهای دیگه سریعتره.چون پارامتر ها توی stack ذخیره میشن و box و unbox نمیشن.

كدوم روش ؟

sg.programmer
دوشنبه 24 اسفند 1388, 13:26 عصر
يه توضيح در باره اين لايه ارائه مي كنيد همراه يا يك مثال كوچيك

FastCode
دوشنبه 24 اسفند 1388, 14:50 عصر
كدوم روش ؟
روشی که توی خود سوال بود.