الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ماهي الطريقة المثلى لجعل هذا الكود داخل Class ؟

مغلق
بدأه sma4 في 22 نوفمبر 2007 · 11 رد · 1,233 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ..

أخواني الكرام ..

إذا لدي الكود التالي لتنفيذ جملة SQL .

string connectionString;
SqlCommand command;
public string ConnectionString
{
get { return connectionString; }
set { connectionString = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
ConnectionString = 
System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
command = new SqlCommand();
SqlConnection MyConnection = new SqlConnection(ConnectionString);
//Open the Connection to the Sql Server
MyConnection.Open();
string SQLs = "select top 5 * from News where Active=1 order by Id desc 
";
command.CommandText = SQLs;
command.Connection = MyConnection;
//لتنفيذ جملة الاستعلام
SqlDataAdapter MyDataAdapter = new SqlDataAdapter(command);
//تحمل البيانات ،كما لاحظت اننا عرفنا DS من نوع داتا ست .. لكي يحمل البيانات 
المرجعه من خلال MyDataAdapter 
DataSet DS = new DataSet();
//بعد ذلك نقوم بعملية تعبئة الداتا ست من خلال الامر 
MyDataAdapter.Fill(DS);
//نقوم بأغلاق او تهيئة MyDataAdapter اي نجعله خالي من كل شيء فارغ بهذا 
الامر
MyDataAdapter.Dispose();
MyConnection.Close();
//هنا ياليت الأمر يكون مفتوح يعني مرة استخدم داتالست ومرة قريدفيو(بمعنى اخر غير مضمنه في الكلاس إلا ان كانت هناك طرق أخرى) 0
DataList1.DataSource = DS;
DataList1.DataBind();
}

من الصعب جداً أن اكرر الكود في كل زر !! أريد أن اعمل Class وأخرن فيه أكبر قدر من الكود بحيث أمرر له تعليمة SQL فقط ..

فماهي الطريقة المثلى لذلك أحبابي ؟ ( باختصار أحبابي ماذا أكتب في Class وماذا أكتب في الأزرار Command !) ..

وفقكم الله أجمعين

تم تعديل هذه المشاركة بواسطة sma4 في 22 نوفمبر 2007 في 20:38

#2

اعمل دالة و ضع الكود بداخلها و مرر لها المعاملات و ارجع منها ما نريد

ولو أردت ضعها في كلاس

#3

^^

بارك الله فيك استاذي أحمد وهذا هو السؤال بالضبط ..

ماهو الكود الذي أضعه بالكلاس ؟؟

لاني جربت انسخ نفس الكود مع بعض التعديلات وطلع لي أكثر من خطأ :(

#4

حاول تركز في الكود ده

using System;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
/// <summary>
/// Summary description for Class1
/// </summary>
public class SomeClass
{
	public SomeClass()
	{

	}

	string connectionString;
	SqlCommand command;
	public string ConnectionString
	{
		get { return connectionString; }
		// set { connectionString = value; } value from config .....
	}


	// pass sql string as parameter
	// return dataset to separate data from interface
	public DataSet ExecuteCommand()
	{
		connectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
		command = new SqlCommand();
		SqlConnection MyConnection = new SqlConnection(ConnectionString);
		//Open the Connection to the Sql Server
		MyConnection.Open();
		string SQLs = "select top 5 * from News where Active=1 order by Id desc";
		command.CommandText = SQLs;
		command.Connection = MyConnection;
		//لتنفيذ جملة الاستعلام
		SqlDataAdapter MyDataAdapter = new SqlDataAdapter(command);
		//تحمل البيانات ،كما لاحظت اننا عرفنا DS من نوع داتا ست .. لكي يحمل البيانات 
		//المرجعه من خلال MyDataAdapter 
		DataSet DS = new DataSet();
		//بعد ذلك نقوم بعملية تعبئة الداتا ست من خلال الامر 
		MyDataAdapter.Fill(DS);
		//نقوم بأغلاق او تهيئة MyDataAdapter اي نجعله خالي من كل شيء فارغ بهذا 
		//الامر
		MyDataAdapter.Dispose();
		MyConnection.Close();

		return DS;
	}
}
#5

الله يوسع لك ان شاء الله ..

ويرزقك من حيث لا تحتسب ..

يالغالي الحمد لله كل شيء تمام والشغل 100% ..

بس اذا ما عليك أمر يالغالي فيه كم سطر ما فهمتهم بصراحة اختصرهم لك بهذا الشكل .:

1- لماذا أستغنيت عن Value

		// set { connectionString = value; } value from config .....

2- نوع الدالة DataSet ! ممكن توضح هذا النوع لأن بعض الدوال مثلUpdate مافيها DataSet ماذا يكون نوع الدالة ..

public DataSet ExecuteCommand()

المعذرة يالغالي فقط تبقى لي هذه النقاط وأرتاح بإذن الله :) ...

#6

إلحاق بالرقم (2) في ردي السابق ..

يعني في كود UPDATE يكون بهذا الشكل "كيف يكون DATATYPE للدالة ؟" ::..

		ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
		command = new SqlCommand();

		SqlConnection MyConnection = new SqlConnection(ConnectionString);
		//Open the Connection to the Sql Server
		MyConnection.Open();

		string SQLs = "update Table_1 set Name='" + TextBox2.Text + "' where Id='" + TextBox1.Text + "'";

		command.CommandText = SQLs;
		//Set the command connection
		command.Connection = MyConnection;
		SqlDataReader Reads;
		Reads = command.ExecuteReader();
		MyConnection.Close();
#7
اقتباس
1- لماذا أستغنيت عن Value

لانك في بداية الدالة بتحملها من ال Configuration File

مفيش داعي انك تعملها SET في ال Property و انت بتحملها تاني في دالة ExecuteCommand

اقتباس
نوع الدالة DataSet ! ممكن توضح هذا النوع لأن بعض الدوال مثلUpdate مافيها DataSet ماذا يكون نوع الدالة

لا انا اعتبرت الأوامر كلها استعلامات طبعا لانك استخدمت دالة Fill مع ال dataset

و علي فكرة الكود مينفعش بشكله الا بالشكل ده

و انت فعلا غيرت الكود عشان تعمل update و حذفت ال Adapter و ال dataset

المهم

انا كنت بفصل بس بين ال interface و ال data class

بالتوفيق

#8

تسلم استاذي الغالي ..

معليش لم اوضح سؤالي بالضبط في Select يكون نوع الدالة

public DataSet ExecuteCommand()

إلى ماذا أحولها في دالة Update ..

وفقك الله استاذي ..

#9

up

#10

يا أخوان ياليت المساعدة العاجلة في الرد رقم 6 ..

ضروري بارك الله فيكم ...

#11

السؤال بشكل أخر وأوضح ..

كيف أضع هذه الدالة داخل Class على أن امرر لها فقط جملة Sql ..

   ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
		command = new SqlCommand();

		SqlConnection MyConnection = new SqlConnection(ConnectionString);
		//Open the Connection to the Sql Server
		MyConnection.Open();

		string SQLs = "update Table_1 set Name='" + TextBox2.Text + "' where Id='" + TextBox1.Text + "'";

		command.CommandText = SQLs;
		//Set the command connection
		command.Connection = MyConnection;
		SqlDataReader Reads;
		Reads = command.ExecuteReader();
		MyConnection.Close();

تم تعديل هذه المشاركة بواسطة sma4 في 4 ديسمبر 2007 في 12:11

#12

بص ياغالي انت ليه رابط كل جمل ال SQL بالدالة دي

يوجد أنواع مختلفة من جمل ال SQL مثل DDL و DML و DCL غير الاستعلامات تماما

يعني انشاء جدول في قاعدة البيانات يختلف عن الاضافة عن الاستعلام عن الحذف0

المهم تحاول تستفيد من OOP و تنشأ لكل جدول Class يحتوي علي دالة لكل جملة SQL أو SP

أنا فهمت انت عايز تعمل حاجة Generic أو Dynamic لتنفيذ كل الجمل بس مش بالأسلوب ده

علي العموم الكود الأخير مشاركتك أنت استخدمت DataReader و EXecuteReader بالرغم من أن الجملة تعديل و ليست استعلام

يكفيك استخدام ExecuteScalar

ياريت الفكرة تكون وصلت

انا اسف لضيق الوقت و ربنا يوفقك يا صاحبي

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…