20-05-16, 02:31 PM
(آخر تعديل لهذه المشاركة : 20-05-16, 02:46 PM {2} بواسطة silverlight.)
الكود التالي يوضح الشكل المبدئي للكلاس الذي تحدثت عنه
عليك أن تضيف له أي من الدوال التي تريدها
و يمكنك هنا ان تستخدم جملة Using و أنت مطمئن تماما أن Connection يتم اغلاقها
الكود التالي يوضح كيف يتم استخدام الكلاس
طبعا يمكنك ان تكتب اي إجراءات او تكتب اي دوال و تضيفها للكلاس كيفما شئت
أو تقوم بتعديل الكود كيفما شئت للتأكد من أن Connection تم إغلاقها
أنا فقط كتبت لك الفكرة المبدئية للكلاس
ملحوظة أخيرة
أعلم جيدا أن ما سوف أقوله سيزعج بعض الإخوة هنا
لكن انا ضد استخدام SQL او MS Access و أري أن كتابة بعض الكلاسات لحفظ البيانات باستخدام Stream أفضل كثيرا من الإعتماد علي قواعد البيانات التقليدية لأنه سيوفر الكثير من الصداع و سيعطي المبرمج قدرة أكبر علي التحكم بالبيانات كيفما يشاء
لكن الكثير من المبرمجين غالبا ما تختار الحلول الأسهل عموما وكما يقول المثل الشعبي عندنا في مصر كل شيخ و له طريقة
عليك أن تضيف له أي من الدوال التي تريدها
و يمكنك هنا ان تستخدم جملة Using و أنت مطمئن تماما أن Connection يتم اغلاقها
كود :
Imports System.Data.SqlClient
Public Class DisposableConnection
Implements IDisposable
Private _disposed As Boolean
Private _conn As SqlConnection
Private _command As SqlCommand
Public Sub New(connectionString As String)
_conn = New SqlConnection(connectionString)
_command = New SqlCommand
End Sub
Public ReadOnly Property Connection As SqlConnection
Get
Return _conn
End Get
End Property
Public ReadOnly Property Command As SqlCommand
Get
Return _command
End Get
End Property
Private Sub Flush()
_conn.Close()
End Sub
Private Sub CleanSqlObjects()
Flush()
If _conn IsNot Nothing Then
_conn.Dispose()
_conn = Nothing
End If
If _command IsNot Nothing Then
_command.Dispose()
_command = Nothing
End If
End Sub
Protected Overridable Sub Dispose(disposing As Boolean)
If _disposed Then
Return
End If
If disposing Then
CleanSqlObjects()
End If
_disposed = True
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
' GC.SuppressFinalize(Me)
End Sub
End Classالكود التالي يوضح كيف يتم استخدام الكلاس
طبعا يمكنك ان تكتب اي إجراءات او تكتب اي دوال و تضيفها للكلاس كيفما شئت
أو تقوم بتعديل الكود كيفما شئت للتأكد من أن Connection تم إغلاقها
أنا فقط كتبت لك الفكرة المبدئية للكلاس
كود :
Dim s As String ' read connection fromm ConfigurationManager
Using conn As New DisposableConnection(s)
' do something
End Usingأعلم جيدا أن ما سوف أقوله سيزعج بعض الإخوة هنا
لكن انا ضد استخدام SQL او MS Access و أري أن كتابة بعض الكلاسات لحفظ البيانات باستخدام Stream أفضل كثيرا من الإعتماد علي قواعد البيانات التقليدية لأنه سيوفر الكثير من الصداع و سيعطي المبرمج قدرة أكبر علي التحكم بالبيانات كيفما يشاء
لكن الكثير من المبرمجين غالبا ما تختار الحلول الأسهل عموما وكما يقول المثل الشعبي عندنا في مصر كل شيخ و له طريقة

