PDA

View Full Version : سوال: ساخت کلاس برای ارتباط با پایگاه داده



Twoplus2010
شنبه 28 آبان 1390, 11:14 صبح
سلام
سوال من اینه من اگه بخوام با پایگاه داده ارتباط برقرار کنم توی برنامه های کوچک می تونم چند بار شی های ارتباط با پایگاه داده رو بنویسم مثلا (در جاهای مختلف چند بار شی sql connection یا sql dataadapter ) رو به کار ببرم ولی در برنامه های بزرگ دیگه نمی شه این کارو کرد باید اول یک کلاس ایجاد و از طریق این کلاس با پایگاه داده ارتباط برقرار کرد تا هم سرعت برنامه پایین نیاد و هم حجم برنامه بالا نره خب مشکل من اینه که من همش روی برنامه های کوچک کار کردم و از راه اول استفاده کردم ولی الان دارم روی پروژه بزرگ کار می کنم و نیاز به راه دوم دارم ولی بلد نیستم اگه دوستای برنامه نویسم لطفی کنن من راهنمایی کنن متشکرم (خواهش می کنم تاپیکو حذف نکنید)

dataking
شنبه 28 آبان 1390, 11:20 صبح
سلام
یک بار این دستورات را بنویس و با فراخوانی کن


private sub sqlconect


دستورات لازم را اینجا بنویس

end subsqlconect یه اسم می تونه هر اسم دیگه ای باشه

هر جا خواستی می تونی فراخوانی کنی

call sqlconect

uniqueboy_ara
شنبه 28 آبان 1390, 12:35 عصر
میتونی از این استفاده کنی


ارتباط سریع و آسان از #C به SQLserver (http://barnamenevis.org/showthread.php?312422-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%B3%D8%B1%DB%8C%D8%B9-%D9%88-%D8%A2%D8%B3%D8%A7%D9%86-%D8%A7%D8%B2-C-%D8%A8%D9%87-SQLserver)

ATili.Nero
شنبه 28 آبان 1390, 13:49 عصر
سلام دوست عزیز
فکر کنم شما می خواهی برنامه نویسی 3 لایه انجام بدی
خب این کار می شه گفت خیلی راحت تر از روش معمولی من که حتی تو برنامه های معمولی ام از روش 3 لایه استفاده می کنم
برای این کار هم
قدم اول:
یک کلاس از نوع DataBase درست کن و کد مربوط به اتصال،قطع ، ویرایش و مشاهده رو توش بربز (کد رو برات نوشتم)

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;

namespace Library_Management
{
public class DataBase
{

SqlConnection conection = new SqlConnection();
public void conect()
{
conection.ConnectionString = "Data Source=ATILI-VAIO;Initial Catalog=DataBase;Integrated Security=True";
if (conection.State == ConnectionState.Closed) conection.Open();
}
public void disconect()
{
if (conection.State == ConnectionState.Open) conection.Close();
}
public DataTable command(SqlCommand command)
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(command);
command.Connection = conection;
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
da.Fill(dt);
return dt;
}
public void docammand(SqlCommand command)
{
command.Connection = conection;
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();

}
}
}


خب این قدم اول یهنی لایه اول
برای قدم بعدی:
یه کلاس هم نام با جدولت تو دیتابیس (حتماً نباید هم نام باشه اما اگه همنام باشه کار خودت راحت تره)
و کد مربوط رو که می خواهی توی اون کلاس بنوسی
برای نمونه من کد مشاهده رو نوشتم

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;

namespace Library_Management
{
public class Class_Admin
{
public DataTable Show_Admin()
{
DataTable dt = new DataTable();
DataBase db = new DataBase();
SqlCommand Cmd = new SqlCommand();
Cmd.CommandText = "select * from Admin";
db.conect();
dt = db.command(Cmd);
db.disconect();
return dt;
}
}
}



خب 2 تا لایه رو درست کردی
تنها کاری که باید بکنی این که:
قدم سوم:
تو برنامت از کلاس دومی استفاده کنی یعنی اصلاً به دیتابس دیگه کاری نداری خب خیلی راحت تری ( هم تو هم برنامت)
برای مثال من می خواهم تمام قیلد های موجود در جدول Admin رو همه اطلاعات رو بخونه و تو دیتا گرید نشون بده
فقط کافیه 2 خط کد بنویسم

private void button1_Click(object sender, EventArgs e)
{
Class_Admin Admin = new Class_Admin();
dataGridView1.DataSource = Admin.Show_Admin();
{

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