تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس 21- Stored Procedures
#1
كاتب الموضوع : Tarek Aldwire


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

مفهوم ال Stored Procedures :

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

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

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


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

كود :
[COLOR=#000000][COLOR=#0000bb]
[/COLOR][COLOR=#dd0000]"Select FirstName,Age From mytable Where FirstName = '{0},textBox1.Text"  
[/COLOR][color=#0000bb][/color][/COLOR]

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

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

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

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

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

كود :
[color=#000000][COLOR=#0000bb]FName [/color][color=#007700]([/color][color=#0000bb]nchar[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700]))
[/COLOR][color=#0000bb]LName[/color][color=#007700]([/color][color=#0000bb]nchar[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700])
[/COLOR][color=#0000bb]Age[/color][color=#007700]([/color][color=#0000bb]bigint[/color][COLOR=#007700])  
[/COLOR][color=#0000bb][/color][/COLOR]


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

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



كود :
[COLOR=#000000][COLOR=#0000bb]
Create PROCEDURE dbo[/COLOR][color=#007700].[/color][COLOR=#0000bb]GetAgesAvg
[/COLOR][color=#007700]@[/color][color=#0000bb]agesavg int [/color][color=#007700]= [/color][COLOR=#0000bb]0 output
[/COLOR][COLOR=#007700]AS
[/COLOR][color=#0000bb]select [/color][color=#007700]@[/color][color=#0000bb]agesavg [/color][color=#007700]= [/color][color=#0000bb]avg[/color][color=#007700]([/color][color=#0000bb]Age[/color][color=#007700]) [/color][COLOR=#0000bb]From tb1
[/COLOR][color=#007700]RETURN @[/color][COLOR=#0000bb]agesavg  
[/COLOR][/COLOR]


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

c#:


كود :
[color=#000000][COLOR=#0000bb]SqlConnection sqlcn [/color][color=#007700]= new [/color][color=#0000bb]SqlConnection[/color][color=#007700]([/color][color=#dd0000]"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\TD_Data.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"[/color][COLOR=#007700]);
[/COLOR][color=#0000bb]string sqlcmdstr [/color][color=#007700]= [/color][color=#dd0000]"GetAgesAvg"[/color][COLOR=#007700];
[/COLOR][color=#0000bb]SqlCommand sqlcmd [/color][color=#007700]= new [/color][color=#0000bb]SqlCommand[/color][color=#007700]([/color][color=#0000bb]sqlcmdstr[/color][color=#007700], [/color][color=#0000bb]sqlcn[/color][COLOR=#007700]);
[/COLOR][color=#0000bb]SqlParameter par [/color][color=#007700]= new [/color][color=#0000bb]SqlParameter[/color][COLOR=#007700]();
[/COLOR][color=#0000bb]sqlcmd[/color][color=#007700].[/color][color=#0000bb]CommandType [/color][color=#007700]= [/color][color=#0000bb]CommandType[/color][color=#007700].[/color][color=#0000bb]StoredProcedure[/color][COLOR=#007700];
[/COLOR][color=#0000bb]par[/color][color=#007700].[/color][color=#0000bb]ParameterName [/color][color=#007700]= [/color][color=#dd0000]"@agesavg"[/color][COLOR=#007700];
[/COLOR][color=#0000bb]par[/color][color=#007700].[/color][color=#0000bb]Direction [/color][color=#007700]= [/color][color=#0000bb]ParameterDirection[/color][color=#007700].[/color][color=#0000bb]Output[/color][COLOR=#007700];
[/COLOR][color=#0000bb]par[/color][color=#007700].[/color][color=#0000bb]SqlDbType [/color][color=#007700]= [/color][color=#0000bb]SqlDbType[/color][color=#007700].[/color][color=#0000bb]Int[/color][COLOR=#007700];
[/COLOR][color=#0000bb]sqlcmd[/color][color=#007700].[/color][color=#0000bb]Parameters[/color][color=#007700].[/color][color=#0000bb]Add[/color][color=#007700]([/color][color=#0000bb]par[/color][COLOR=#007700]);
try
{
[/COLOR][color=#0000bb]sqlcn[/color][color=#007700].[/color][color=#0000bb]Open[/color][COLOR=#007700]();
}
catch ([/COLOR][color=#0000bb]Exception ex[/color][COLOR=#007700])
{
[/COLOR][color=#0000bb]MessageBox[/color][color=#007700].[/color][color=#0000bb]Show[/color][color=#007700]([/color][color=#0000bb]ex[/color][color=#007700].[/color][color=#0000bb]Message[/color][COLOR=#007700]);
}
[/COLOR][color=#0000bb]sqlcmd[/color][color=#007700].[/color][color=#0000bb]ExecuteNonQuery[/color][COLOR=#007700]();
[/COLOR][color=#0000bb]textBox1[/color][color=#007700].[/color][color=#0000bb]Text [/color][color=#007700]= [/color][color=#0000bb]sqlcmd[/color][color=#007700].[/color][color=#0000bb]Parameters[/color][color=#007700]([/color][color=#dd0000]"@agesavg"[/color][color=#007700]).[/color][color=#0000bb]Value[/color][color=#007700].[/color][color=#0000bb]ToString[/color][COLOR=#007700]();
[/COLOR][color=#0000bb]sqlcn[/color][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]();  
[/COLOR][color=#0000bb][/color][/COLOR]

vb.net :

كود :
[COLOR=#000000][COLOR=#0000bb]
Dim sqlcn [/COLOR][color=#007700]As New [/color][color=#0000bb]SqlConnection[/color][color=#007700]([/color][color=#dd0000]"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\TD\Documents\TD_Data.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"[/color][COLOR=#007700])
[/COLOR][color=#0000bb]Dim sqlcmdstr [/color][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#dd0000]"GetAgesAvg"
[/COLOR][color=#0000bb]Dim sqlcmd [/color][color=#007700]As New [/color][color=#0000bb]SqlCommand[/color][color=#007700]([/color][color=#0000bb]sqlcmdstr[/color][color=#007700], [/color][color=#0000bb]sqlcn[/color][COLOR=#007700])
[/COLOR][color=#0000bb]Dim par [/color][color=#007700]As New [/color][COLOR=#0000bb]SqlParameter
sqlcmd[/COLOR][color=#007700].[/color][color=#0000bb]CommandType [/color][color=#007700]= [/color][color=#0000bb]CommandType[/color][color=#007700].[/color][COLOR=#0000bb]StoredProcedure
par[/COLOR][color=#007700].[/color][color=#0000bb]ParameterName [/color][color=#007700]= [/color][COLOR=#dd0000]"@agesavg"
[/COLOR][color=#0000bb]par[/color][color=#007700].[/color][color=#0000bb]Direction [/color][color=#007700]= [/color][color=#0000bb]ParameterDirection[/color][color=#007700].[/color][COLOR=#0000bb]Output
par[/COLOR][color=#007700].[/color][color=#0000bb]SqlDbType [/color][color=#007700]= [/color][color=#0000bb]SqlDbType[/color][color=#007700].[/color][COLOR=#0000bb]Int
sqlcmd[/COLOR][color=#007700].[/color][color=#0000bb]Parameters[/color][color=#007700].[/color][color=#0000bb]Add[/color][color=#007700]([/color][color=#0000bb]par[/color][COLOR=#007700])
Try
[/COLOR][color=#0000bb]sqlcn[/color][color=#007700].[/color][color=#0000bb]Open[/color][COLOR=#007700]()
Catch [/COLOR][color=#0000bb]ex [/color][color=#007700]As [/color][COLOR=#0000bb]Exception
MsgBox[/COLOR][color=#007700]([/color][color=#0000bb]ex[/color][color=#007700].[/color][color=#0000bb]Message[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]End
End [/COLOR][COLOR=#007700]Try
[/COLOR][color=#0000bb]sqlcmd[/color][color=#007700].[/color][color=#0000bb]ExecuteNonQuery[/color][COLOR=#007700]()
[/COLOR][color=#0000bb]TextBox1[/color][color=#007700].[/color][color=#0000bb]Text [/color][color=#007700]= [/color][color=#0000bb]sqlcmd[/color][color=#007700].[/color][color=#0000bb]Parameters[/color][color=#007700]([/color][color=#dd0000]"@agesavg"[/color][color=#007700]).[/color][color=#0000bb]Value[/color][color=#007700].[/color][COLOR=#0000bb]ToString
sqlcn[/COLOR][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]()  
[/COLOR][color=#0000bb][/color][/COLOR]

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


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

إلى اللقاء في الدرس القادم إن شاء الله...
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس 22- دوال sql server RaggiTech 0 1,047 18-10-12, 04:11 PM
آخر رد: RaggiTech
  الدرس 20- تنفيذ جمل الإستعلام insert-update-delete RaggiTech 2 967 18-10-12, 04:08 PM
آخر رد: RaggiTech
  الدرس 19- ربط قاعدة بيانات accessمع c#-vb.net وتنفيذ جمل إستعلام - الوضع المتصل RaggiTech 0 1,316 18-10-12, 03:41 PM
آخر رد: RaggiTech
  الدرس 18- ربط قاعدة بيانات sql مع c#-vb.net وتنفيذ جمل إستعلام - الوضع المتصل RaggiTech 0 2,468 18-10-12, 03:29 PM
آخر رد: RaggiTech
  الدرس 17- مقدمة إلى قواعد البيانات RaggiTech 0 734 18-10-12, 03:21 PM
آخر رد: RaggiTech
  الدرس 16- تصميم الأدوات الخاصة RaggiTech 0 701 18-10-12, 03:20 PM
آخر رد: RaggiTech
  الدرس 15- البداية مع gdi+ RaggiTech 1 752 18-10-12, 03:16 PM
آخر رد: RaggiTech
  الدرس 14- شرح تقنية ال wpf مع بعض الأمثلة RaggiTech 4 1,102 18-10-12, 03:12 PM
آخر رد: RaggiTech
  الدرس 13- Multi-Threading RaggiTech 0 770 18-10-12, 03:03 PM
آخر رد: RaggiTech
  الدرس 12- شرح تقنية WCF والتخصص بال Sockets مع مثال RaggiTech 0 2,437 18-10-12, 02:57 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم