المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس 21: Stored Procedures دورة C#


khaledbelal
02-13-2010, 04:04 AM
السلام عليكم ورحمة الله وبركاته...

مفهوم ال Stored Procedures :

إن ال Stored Procedures هي عبارة عن جملة إستعلام مخزنة في قاعدة البيانات وإستدعائها يشبه إستدعاء أي Method كما سوف ترى...

لنرى مثال لضرورة إستخدام ال Stored Procedures ...

أولا إنشئ مشروع جديد وقاعدة بيانات وسمها كما سميناها سابقا mydata**** (تجد هذه التفاصيل في أول الدرس 18)


والان لو كنا مثلا نريد المستخدم أن يضع إسم الموظف المراد جلب بياناته في textBox فقرر في نفس اللحظة أن يصبح مبرمج فكتب مثلا ...
سوف يكون الكود لتنفيذ ذلك:


"Select FirstName,Age From mytable Where FirstName = '{0},textBox1.Text"

الان ليس المهم الكود وإنما المستخدم فتصور لو الأخ كتب مثلا...

Drop mytable !!!
أو أي جملة إستعلام أخرى !!!

ما السبيل لتفادي ذلك ؟

هنا جاء دور ال Stored Procedures لكي لا يتمكن المستخدم من تنفيذ جمل إستعلام من خلال كتاباته...

الان أضف لقاعدة البيانات Stored Procedures كالتالي:
( لقد قمت بإنشاء قاعدة بيانات بإسم TD_Data و جدول بها بإسم tb1 يحوي على ثلاث أعمدة هي:

FName (nchar(10))
LName(nchar(10)
Age(bigint)

من مجلد ال Stored Procedures إختر Add New Stored Procedures

والان أكتب بها...


Create PROCEDURE dbo.GetAgesAvg
@agesavg int = 0 output
AS
select @agesavg = avg(Age) From tb1
RETURN @agesavg

ثم ضع Button و textBox وفي الحدث click لل button أكتب...

c#:

SqlConnection sqlcn = new SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\* *******s\TD_Data.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
string sqlcmdstr = "GetAgesAvg";
SqlCommand sqlcmd = new SqlCommand(sqlcmdstr, sqlcn);
SqlParameter par = new SqlParameter();
sqlcmd.CommandType = CommandType.StoredProcedure;
par.ParameterName = "@agesavg";
par.Direction = ParameterDirection.Output;
par.SqlDbType = SqlDbType.Int;
sqlcmd.Parameters.Add(par);
try
{
sqlcn.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
sqlcmd.ExecuteNonQuery();
textBox1.Text = sqlcmd.Parameters("@agesavg").Value.ToString();
sqlcn.Close();

vb.net :


Dim sqlcn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\* *******s\TD_Data.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
Dim sqlcmdstr As String = "GetAgesAvg"
Dim sqlcmd As New SqlCommand(sqlcmdstr, sqlcn)
Dim par As New SqlParameter
sqlcmd.CommandType = CommandType.StoredProcedure
par.ParameterName = "@agesavg"
par.Direction = ParameterDirection.Output
par.SqlDbType = SqlDbType.Int
sqlcmd.Parameters.Add(par)
Try
sqlcn.Open()
Catch ex As Exception
MsgBox(ex.Message)
End
End Try
sqlcmd.ExecuteNonQuery()
TextBox1.Text = sqlcmd.Parameters("@agesavg").Value.ToString
sqlcn.Close()

وهكذا في جمل الإستعلام هذه سوف يعود ال parameter بمعدل الأعمار التي في الجدول
( مجموع الأعمار تقسيم عددها )


وعلى هذا النحو تستخدم ال Stored Procedures ....

إلى اللقاء في الدرس القادم إن شاء الله...

منقول من منتدى فيجوال بيسك للعرب