PDA

View Full Version : مبتدی: تابعی برای اتصال به sql



sara_aryanfar
جمعه 25 شهریور 1390, 23:42 عصر
با سلام من برنامه ای دارم که از قسمت های مختلف اون قراره به دیتا بیس متصل بشه حالا می خوام یک تابع بنویسم که مخصوص این کار باشه یعنی هر جا نیاز به اتصال بود این تابع رو صدا بزنم چطوری باید این کار رو انجام داد که همه دستورات insert,delet,selectرو بشه انجام داد

mr.siahatgar
شنبه 26 شهریور 1390, 00:04 صبح
با سلام
دوست گرامی شما باید از خاصیت سه لایه ای استفاده نمایید به عنوان مثال یک لایه که در اون اتصال به دیتابیس باشه و بعد یه لایه که دستورات کلی باشه و لایه سوم هم که همان فرمها هست و دستورات درونش قرار میگیره

sara_aryanfar
شنبه 26 شهریور 1390, 01:22 صبح
البته فکر کنم برنامه نویسی چند لایه مربوط به امنیت و اعتبار سنجی این حرفاست اما من فقط فعلا یه تابع ساده می خوام بتونم کار اتصال رو در طول برنامه با اون انجام بدم

mr.siahatgar
شنبه 26 شهریور 1390, 07:58 صبح
با سلام
همانطور که گفتم باید از سه لایه استفاده کنی - خیلی هم راحت هست یک تابع مربوط به اتصال توی لایه اول مینویسی و بعد هر جا خواستی ان را فراخوانی میکنی

hamed_kh311
شنبه 26 شهریور 1390, 08:49 صبح
با سلام
همانطور که گفتم باید از سه لایه استفاده کنی - خیلی هم راحت هست یک تابع مربوط به اتصال توی لایه اول مینویسی و بعد هر جا خواستی ان را فراخوانی میکنی

با سلام
حق با همين دوستمون هست،البته اسم 3 لايه نگذاريم خيلی بهتر هست چون خيلی از بچه ها از اين ميترسن !!
شما يه کلاس بنويس داخل اون 4 تا متد باشه،يکی اتصال،يکی قطع اتصال يکی واسه سلکت کردن و يکی واسه حذف،به روز کردن و وارد کردن،مقدار ورودی های اين 2 تابع آخر هم همون دستور sql باشه

يا حق

sara_aryanfar
شنبه 26 شهریور 1390, 10:48 صبح
با سلام
حق با همين دوستمون هست،البته اسم 3 لايه نگذاريم خيلی بهتر هست چون خيلی از بچه ها از اين ميترسن !!
شما يه کلاس بنويس داخل اون 4 تا متد باشه،يکی اتصال،يکی قطع اتصال يکی واسه سلکت کردن و يکی واسه حذف،به روز کردن و وارد کردن،مقدار ورودی های اين 2 تابع آخر هم همون دستور sql باشه

يا حق
ممنون توضیح شما کاملا خوب بود فقط برای راهنمایی نمونه کد رو هم بزارید ممنون

mr.siahatgar
شنبه 26 شهریور 1390, 11:32 صبح
با سلام
شما ابتدا یک کلاس به درست میکنید مانند زیر که من یک کلاس به نام دیتابیسد درست کردم

class databased
{
public string server = ".";
public string database = "imd";
public string username;
public string password;
private SqlConnection con;
private SqlCommand cmd;
private SqlDataAdapter da;
public databased()
{


con = new SqlConnection();
cmd = new SqlCommand();
da = new SqlDataAdapter();
cmd.Connection = con;
da.SelectCommand = cmd;
}
public void connect()
{
string cs = "Data Source=.;Initial Catalog=imd;Integrated Security=True";
cs = string.Format(cs, server, database);
con.ConnectionString = cs;
con.Open();
}
public void disconnect()
{
con.Close();
}
public System.Data.DataTable select(string sql)
{
cmd.CommandText = sql;
System.Data.DataTable dt = new System.Data.DataTable();
da.Fill(dt);
return dt;
}
public void docommand(string sql)
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}

که شما میتوانید تمام انها را در کلاس خودتون ذخیره کنید البته فقط باید در محل نام مکان دیتابیس تغیر داده و نام مکان دیتابیس خودتون را بزارید

بعد یه کلاس دیگه درست کنید که من یه کلاس به نام اینسرت درست کردم و مشتق دادم به دیتابیسید مانند زیر و کدهای اینسرت و سلکت و اپدیت را در توابعی جداگانه نوشتم قبلش هم به تعداد فیلدهای جدولم استرینگ تعریف کردم

class insert : databased
{

public int id;
public string name;
public string family;
public stringcod;




public void insert1()
{

string sql = "insert into [nametable](id ,name,family,code )values(N'{0}',N'{1}',N'{2}',N'{3}')";
sql = string.Format(sql, this.id, this.name,this.family, this.code);

base.connect();
base.docommand(sql);
base.disconnect();
}

public System.Data.DataTable select()
{
base.connect();
System.Data.DataTable dt = base.select("select * from tabelname ");
base.disconnect();
return dt;

}

}


public System.Data.DataTable UPDATE1()
{
base.connect();
System.Data.DataTable dt = base.select("UPDATE nametable SET family = null where family = '99999' ");

base.disconnect();
return dt;
}

حالا کافی هست در هر جا که میخواهید مثلا زیر باتن در فرم یک این کد را بنویسید
insert f= new insert
f.select
یا f.update
و غیره