تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مدخل عملي لـ N-Tier - التطبيقات المُتعددة الطبقات
#7
السلام عليك ورحمة الله وبركاته


بعدما بنينا الجداول في قاعدة البيانات نأتي للجزء الثاني من طبقة البيانات وهو الإجراءات المخزنة .


س- ما هو الإجراء المخزن ؟

ج- http://www.arabteam2000-forum.com/in...howtopic=84176




في الـ N-Tier الإجراء المخزن Stored Procedure سيكون المقابل لسلوك الفئة الذي يتطلب اتصال مع جدول قاعدة البيانات .


بعبارة أخرى ،،،

نحن نقول في فئة Person هناك وظيفة (دالة) اسمها Delete تقوم بحذف بيانات الكائن الحالي في الجدول .

هذه الدالة Delete تحتاج لإجراء مخزن داخل قاعدة البيانات .

لهذا ننشئ إجراء مخزن أسمه sp_Delete_Person

و نضع بداخله الكود التالي :

PHP كود :
CREATE PROC sp_Delete_Person
@Id as bigint
as
Delete From  Person where ID=@Id
GO 


هذا الإجراء المخزن يستقبل بارميتر اسمه @Id من نوع Bigint

سيتم استخدام هذا البارميتر في تنفيذ الاستعلام :
PHP كود :
Delete From  Person where ID=@Id 


و كما قلنا سابقاً ، كل سلوك للفئة له علاقة بقاعدة البيانات لابد أن يكون له إجراء مخزن .

و على هذا فنحن بحاجة لـ 4 إجراءات مخزنة على الأقل تقابل كل فئة بنيناها في طبقة الأعمال ، و ستكون هذه الإجراءات كالتالي :

sp_Add_Person
sp_Delete_Person
sp_Update_Person
sp_Select_Person


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

PHP كود :
/****** Object:  Stored Procedure dbo.sp_Add_Person    Script Date: 14/03/2008 05:50:23 م ******/
if exists (select from dbo.sysobjects where id object_id(N'[dbo].[sp_Add_Person]') and OBJECTPROPERTY(idN'IsProcedure') = 1)
drop procedure [dbo].[sp_Add_Person]
GO

/****** Object:  Stored Procedure dbo.sp_Delete_Person    Script Date: 14/03/2008 05:50:23 م ******/
if exists (select from dbo.sysobjects where id object_id(N'[dbo].[sp_Delete_Person]') and OBJECTPROPERTY(idN'IsProcedure') = 1)
drop procedure [dbo].[sp_Delete_Person]
GO

/****** Object:  Stored Procedure dbo.sp_Select_Person    Script Date: 14/03/2008 05:50:23 م ******/
if exists (select from dbo.sysobjects where id object_id(N'[dbo].[sp_Select_Person]') and OBJECTPROPERTY(idN'IsProcedure') = 1)
drop procedure [dbo].[sp_Select_Person]
GO

/****** Object:  Stored Procedure dbo.sp_Update_Person    Script Date: 14/03/2008 05:50:23 م ******/
if exists (select from dbo.sysobjects where id object_id(N'[dbo].[sp_Update_Person]') and OBJECTPROPERTY(idN'IsProcedure') = 1)
drop procedure [dbo].[sp_Update_Person]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.sp_Add_Person    Script Date: 14/03/2008 05:50:24 م ******/
CREATE Proc sp_Add_Person

@ID bigint OUTPUT,
@
Name nvarchar(255),
@
Age int,
@
Area nvarchar(255),
@
Job nvarchar(255)

as
insert into Person([Name],Age,Area,Job)
values
(
@
Name ,
@
Age ,
@
Area ,
@
Job 
);
Select @ID=Scope_Identity();
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.sp_Delete_Person    Script Date: 14/03/2008 05:50:24 م ******/
CREATE PROC sp_Delete_Person
@Id as bigint
as
Delete From  Person where ID=@Id
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.sp_Select_Person    Script Date: 14/03/2008 05:50:24 م ******/
CREATE PROC sp_Select_Person
@Id as bigint
as
Select *  From  Person where ID=@Id
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.sp_Update_Person    Script Date: 14/03/2008 05:50:24 م ******/
CREATE Proc sp_Update_Person
@ID bigint ,
@
Name nvarchar(255),
@
Age int,
@
Area nvarchar(255),
@
Job nvarchar(255)
as
Update Person set
[Name] =@Name ,
Age=@Age ,
Area=@Area ,
job=@Job 
where 
[ID]=@ID
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO 


بإمكانة نسخه و تنفيذه مباشرة على نفس قاعدة البيانات .

و بنفس الطريقة أتمنى أن تقوم بعمل الإجراءات المخزنة للفئة ContactNumber


أتمنى لكم التوفيق ،

و للحديث بقية إن شاء الله ،،،
http://www.elfouadsoft.com
mohamed_tegara@yahoo.com
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
مدخل عملي لـ N-Tier - التطبيقات المُتعددة الطبقات - بواسطة senior - 02-10-12, 05:28 PM


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


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