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

ازاى استدعى Stord Procedure من داخل السى شارب

بدأه tarekelectronic في 6 نوفمبر 2009 · 3 رد · 692 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم انا عامل صفحة باستخدام سى شارب فيها يزر نيم والباص عايز من خلال سكول اعمل stored procedure ومن خلاله اقول ان يعمل شيك على اليز والباص انا حاولت اعمل

create proc check(@user varchar(20),@pass varchar(20))

as

select user,pass from users

where username = @user and password = @pass

ولكن اريد معرفة ازاى استدعى بقى stord procedure

#2

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

أخي الكريم, قبل الوصول إلى استدعاء stored procedure, أنت تريد التأكد من وجود مستخدم له اسم @user و له كلمة مرور @pass يمكن أن تستعمل جملة استعلام ترجع لك فقط إذا كان هذا المستخدم بكلمة مروره يوجد على قاعدة البيانات أم لا. مثال :

create proc checkuser(@user varchar(20),@pass varchar(20))
as
select Count(user) from users
where username = @user and password = @pass

الكود أعلاه يرجع لك عدد المستخدمين الذين لهم اسم المرور @user و كلمة المرور @pass فإذا كان الصفر تمنع المستخدم من المرور و إذا كان غير ذلك فتسمح له بالمرور.

أما بالنسبة لكود استدعاء Stored procedure فجرب هذا :

			// جملة الربط
			SqlConnection con = new SqlConnection("جملة الربط");
			// كائن تنفيذ جمل سكل
			SqlCommand cmd = con.CreateCommand();
			// اسم stored procedure
			cmd.CommandText = "check";
			// تحديد نوعية جملة سكل في stored procedure
			cmd.CommandType = CommandType.StoredProcedure;
			// معاملات جملة سكل
			SqlParameter prm;
			prm = cmd.CreateParameter();
			// اسم المعامل
			prm.ParameterName = "@user";
			// حجم المعامل
			prm.Size = 20;
			// نوع بيانات المعامل
			prm.SqlDbType = SqlDbType.VarChar;
			// قيمة المعامل
			prm.SqlValue = "user_name";
			cmd.Parameters.Add(prm);

			prm = cmd.CreateParameter();
			prm.ParameterName = "@pass";
			prm.Size = 20;
			prm.SqlDbType = SqlDbType.VarChar;
			prm.SqlValue = "user_password";
			cmd.Parameters.Add(prm);
			// ربط الإتصال
			con.Open();
			// تنفيذ جملة سكل التي تنفذ stored procedure التي ترجع لنا عدد المستخدمين بكلمة المرور و والإسم الذين مررناه عبر معاملي جملة سكل
			int n = (int)cmd.ExecuteScalar();
			// غلق الإتصال
			con.Close();
			// التأكد من النتيجة
			if (n > 0)
			{
				// اسم المستخدم و كلمة مروره موجودة
				// السماح له بالمرور
			}
			else
			{
				// اسم المستخدم أو كلمة المرور غير موجودة
				// عدم السماح بالمرور
			}

تحرير : زيادة في التعليقات على الكود

تحياتي...

تم تعديل هذه المشاركة بواسطة محمد رضى في 6 نوفمبر 2009 في 15:42

#3

اخى اشكرك على ردك ولكن فى طريقة اخرى سهلة وانا جربتها بس على تيكست بوكس واحد انا عايز بقى اعملها على الاثنين وهذه هى الطريقة

1:

cmd.commandtext = "check''+textbox1.text+"'";

فاتمنى تعديل الكود باستخدام الاثنين تيكست بوكس ازاى احطهم مع بعض عشان يقرا من stord

#4

بالطبع هي طريقة سهلة و لكن في نفس الوقت خطيرة و لا ينصح باستعمالها...

هذا مثال بسيط في موضوع الحماية من sql injection و بداخله رابط نحو موضوع متقدم في الموضوع.

Sql Injection

تحياتي...

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