PDA

View Full Version : سوال: مشکل با نوشتن کدهای تکراری در هر فرم



kh1387
چهارشنبه 25 شهریور 1388, 17:35 عصر
با سلام
مشکل من اینه که باید برای اتصال به بانک در هر فرم تمامی فرآیندهای اتصال به بانک sqlServer رو انجام بدم بصورت تکراری:ناراحت:
کسی راهی بلد نیست که بشه از این همه کد تکراری اجتناب کرد و با نوشتن حداقل کد بهترین جواب رو گرفت؟
اگه پاسخ بعضی ها اینه که از معماری سه لایه استفاده کنم، خیلی کتاب خوندم ولی متوجه نمی شم.
اگه کسی پروژه ای آموزشی داره ممنون می شم بهم بده
متشکرم

debugger
چهارشنبه 25 شهریور 1388, 17:51 عصر
باید از کلاس استفاده کنی

kh1387
چهارشنبه 25 شهریور 1388, 21:42 عصر
باید از کلاس استفاده کنی
دوست خوبم میدونم باید از کلاس استفاده کنم.
و بهترین کلاس هم معماری سه لایه هست.
من در همین زمینه کمک می خوام

asefy2008
چهارشنبه 25 شهریور 1388, 22:10 عصر
سلام دوست من جناب آقای کیانی یک مقاله خوب در مورد معماری سه لایه نوشتن اگه بتونید اون رو پیدا کنید خیلی خوبه. در دو بخش هم هست مثال هم داره
در ضمن معماری بیش از سه لایه هم هست بستگی به کارتون داره
موفق باشید

Sajjad.Aghapour
چهارشنبه 25 شهریور 1388, 22:21 عصر
در سناریوی 4 موجود در بخش گفتگوی فنی در زمینه فناوری های مایکروسافت (http://barnamenevis.org/forum/forumdisplay.php?s=&daysprune=-1&f=103) به این بحث پرداخته شده.مطالعه کنید....

http://barnamenevis.org/forum/showthread.php?t=151744

kh1387
یک شنبه 29 شهریور 1388, 21:13 عصر
در سناریوی 4 موجود در بخش گفتگوی فنی در زمینه فناوری های مایکروسافت (http://barnamenevis.org/forum/forumdisplay.php?s=&daysprune=-1&f=103) به این بحث پرداخته شده.مطالعه کنید....

http://barnamenevis.org/forum/showthread.php?t=151744
ببین سجاد جونم
من میدونم اونجا داره در این مورد بحث میشه ولی من خیلی مبتدی تر از این حرفام
اگه میشه کسی محض رضای خدا منو راهنمایی کنه:افسرده:

RED-C0DE
یک شنبه 29 شهریور 1388, 21:20 عصر
اینجا (http://barnamenevis.org/forum/showthread.php?t=64210&page=31)هم من ی برنامه ساده گذاشتم ک بصورت 3 لایه نوشته شده...
می تونی کلاس مربوط ب اتصال ب بانک رو هم نگاه کنی..

Vahid_moghaddam
یک شنبه 29 شهریور 1388, 22:10 عصر
این لینک رو ببینید
http://www.asp.net/learn/data-access/

kh1387
یک شنبه 29 شهریور 1388, 23:36 عصر
اینجا (http://barnamenevis.org/forum/showthread.php?t=64210&page=31)هم من ی برنامه ساده گذاشتم ک بصورت 3 لایه نوشته شده...
می تونی کلاس مربوط ب اتصال ب بانک رو هم نگاه کنی..
من که ندیدم
میشه لینک دقیقشو بدید؟:افسرده::ناراحت:
متشکرم

kh1387
دوشنبه 30 شهریور 1388, 12:20 عصر
سلام دوست من جناب آقای کیانی یک مقاله خوب در مورد معماری سه لایه نوشتن اگه بتونید اون رو پیدا کنید خیلی خوبه. در دو بخش هم هست مثال هم داره
در ضمن معماری بیش از سه لایه هم هست بستگی به کارتون داره
موفق باشید
شما اونو ندارید؟
من هرچه سرچ کردم ندیدم:ناراحت:

kh1387
چهارشنبه 01 مهر 1388, 18:17 عصر
واقعا یکی نیست جواب ما رو بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟

Jean Reno
چهارشنبه 01 مهر 1388, 19:07 عصر
واقعا یکی نیست جواب ما رو بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟

من خودم یه پروژه دارم که توش چندین بار مجبورم به بانکم متصل بشم و عملیات درج و حذف و جستجو و غیره رو انجام بدم

کد کلاسم به این صورته حالا خودت می تونی بر اساس نیازت ویرایشش کنی در انتهای کد نیز کدی که مثالی از نحوه استفاده از کلاسه رو اوردم
موفق باشی





using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
using Microsoft.VisualBasic;
using System.Diagnostics;
using System;

namespace His_DataBase
{

class My_DataBase
{
private string Connect_str = "server=localhost;Initial Catalog=YourDatabeseName;Integrated Security=True";


private SqlConnection obj_Con;
private SqlCommand obj_Cmd;
private SqlDataAdapter Obj_Adap;

public My_DataBase()
{
obj_Con = new SqlConnection();
obj_Cmd = new SqlCommand();
Obj_Adap = new SqlDataAdapter();
obj_Cmd.Connection = obj_Con;
Obj_Adap.SelectCommand = obj_Cmd;
obj_Con.ConnectionString = Connect_str;


}



public My_DataBase(string ConnectionString)
{
obj_Con = new SqlConnection();
obj_Cmd = new SqlCommand();
Obj_Adap = new SqlDataAdapter();

obj_Cmd.Connection = obj_Con;
Obj_Adap.SelectCommand = obj_Cmd;
obj_Con.ConnectionString = ConnectionString;
obj_Con.Open();
open = true;
}


public void connect()
{
try
{
if (!open)
{
obj_Con.Open();
open = true;
}
}
catch (Exception exp)
{
MessageBox.Show("خطا در ایجاد ارتباط با پایگاه داده", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
// AppLog.logXmlFile(exp, AppLog.AppLogType.Handled);
}
}


public SqlDataAdapter New_Adap(string strsql)
{

connect();
SqlDataAdapter Obj_Adap = new SqlDataAdapter(strsql, obj_Con);
return Obj_Adap;

}


public void disconnect()
{
try
{
obj_Con.Close();
open = false;
}
catch (Exception exp)
{
MessageBox.Show("خطا در هنگام قطع ارتباط با پایگاه داده", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
// AppLog.logXmlFile(exp, AppLog.AppLogType.Handled);
}
}



public int D_Exe(SqlCommand obj_Cmd)
{
obj_Cmd.Connection = obj_Con;
return obj_Cmd.ExecuteNonQuery();
}



public SqlDataReader Do_Read(SqlCommand obj_Cmd)
{
try
{
obj_Cmd.Connection = obj_Con;
return obj_Cmd.ExecuteReader();
}
catch (SqlException exp)
{
MessageBox.Show("خطا در انجام فرمان پایگاه داده", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
// AppLog.logXmlFile(exp, AppLog.AppLogType.Handled);
return null;
}

}


public int docommand(string sql)
{
try
{
connect();
obj_Cmd.CommandText = sql;
obj_Cmd.Connection = obj_Con;
return obj_Cmd.ExecuteNonQuery();
}
catch (Exception exp)
{
MessageBox.Show("خطا در انجام فرمان پایگاه داده", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
// AppLog.logXmlFile(exp, AppLog.AppLogType.Handled);
return -1;
}

}



public bool read(string sql, SqlDataReader Obj_reader)
{
try
{
obj_Cmd.CommandText = sql;
Obj_reader = obj_Cmd.ExecuteReader();
return Obj_reader.Read();
}
catch (Exception exp)
{
MessageBox.Show("خطا در انجام فرمان پایگاه داده", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
// AppLog.logXmlFile(exp, AppLog.AppLogType.Handled);
return false;
}

}



public DataTable select(string sql)
{
try
{
DataTable DT = new DataTable();
obj_Cmd.CommandText = sql;
Obj_Adap.Fill(DT);
return DT;
}
catch (Exception exp)
{
MessageBox.Show("خطا در انجام فرمان پایگاه داده", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
// AppLog.logXmlFile(exp, AppLog.AppLogType.Handled);
return null;
}

}

public DataSet Fill_Dataset_com(SqlCommand Obj_comm,string table_name)
{
try
{
DataSet Obj_dataset = new DataSet();
Obj_Adap.SelectCommand = Obj_comm;
Obj_Adap.Fill(Obj_dataset);

return Obj_dataset ;
}
catch (Exception exp)
{
MessageBox.Show("خطا در انجام فرمان پایگاه داده", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
// AppLog.logXmlFile(exp, AppLog.AppLogType.Handled);
return null;
}

}

public DataSet Fill_Dataset_Str(string fill_Str , string tabale_name )
{
try
{
DataSet Obj_dataset = new DataSet();
Obj_Adap.SelectCommand.CommandText = fill_Str;

Obj_Adap.Fill(Obj_dataset,tabale_name );

return Obj_dataset;
}
catch (Exception exp)
{
MessageBox.Show("خطا در انجام فرمان پایگاه داده", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
// AppLog.logXmlFile(exp, AppLog.AppLogType.Handled);
return null;
}

}



}

}





این هم مثالی از نحوه استفاده از کلاس بالا




My_DataBase Obj_class = new My_DataBase();
string Delete_str = "delete from Doctor where radif=@radif";

SqlCommand delete_comm = new SqlCommand();
delete_comm.CommandText = Delete_str;
delete_comm.Parameters.AddWithValue("@radif", label1.Text);

Obj_class.connect();
Obj_class.D_Exe(delete_comm);
Obj_class.disconnect();