أهم أقسام المدونة

الصفحات

الجمعة، 23 ديسمبر 2016

SqlConnection Class


 فئة اتصال سيكيول SqlConnection Class
 

هذه الفئة ترث الفئة DbConnection، ما يعني أنها ضمنيا ترث الفئة Component وتمثل الواجهة IDbConnection.

وبالإضافة إلى الخصائص التي ترثها من الفئة الأم، تمتلك هذه الفئة الخصائص التالية:
 

 إطلاق حدث الخطأ FireInfoMessageEventOnUserErrors:
إذا جعلت قيمة هذه الخاصية True، فسيتم إطلاق الحدث InfoMessage فور حدوث خطأ في الاتصال، ودون انتظار انتهاء تنفيذ الإجراء الذي أنشأ الاتصال.. أما إذا تركت قيمتها الافتراضية False، فسينطلق استثناء Exception في البرنامج عند حدوث خطأ في الاتصال، ولم ينطلق الحدث InfoMessage إلا بعد انتهاء تنفيذ الإجراء الذي أنشأ الاتصال.
 

* حجم حزم البيانات PacketSize:
تعيد حجم حِزم البيانات (بالوحدة الثنائية Byte) المستخدمة في نقل البيانات.
 

 تفعيل الإحصائيات StatisticsEnabled:
إذا جعلت قيمة هذه الخاصية True، فسيتم جمع إحصائيات عن عملية الاتصال.. لاحظ أن هذا مفيد في بعض الحالات، لكنه قد يؤدي إلى إبطاء الاتصال، لهذا لا تستخدمه إلا للضرورة.. والقيمة الافتراضية لهذه الخاصية هي False. 

* معرف الجهاز WorkstationId:
تعيد اسم جهاز العميل المتصل بالخادم. 

وبالإضافة إلى ما تمثله من وسائل الواجهة IDbConnection، تمتلك هذه الفئة الوسائل التالية: 

 تغيير كلمة السر ChangePassword:
أرسل إلى هذه الوسيلة نص الاتصال، وكلمة السر الجديدة التي تريد استخدامها مع المستخدم المحدد في نص الاتصال بدلا من كلمة السر القديمة.. هذا معناه أن نص الاتصال يجب أن يحتوي على اسم المستخدم UserID وكلمة السر القديمة Password، لهذا لو أرسلت نص اتصال فيه خيار الحماية المتكاملة IntegratedSecurity فسيحدث خطأ.
وتقوم هذه الوسيلة بفتح اتصال خاص بها لتغيير كلمة السر، وإغلاقه فور الانتهاء من هذا، دون التعامل مع رصيد الاتصالات المساهمة Connection Pool.
وتفيدك هذه الوسيلة إذا كانت كلمة السر الخاصة بالمستخدم قد انتهت صلاحيتها Expired ويجب تغييرها.. ويمكنك معرفة هذا عند استخدام الوسيلة Open لفتح الاتصال، حيث سيحدث خطأ في البرنامج من النوع SqlException، وعليك أن تفحص قيمة الخاصية Number الخاصة بهذا الاستثناء، فإن وجدت قيمتها 18487 أو 18488 فهذا معناه انتهاء صلاحية كلمة السر ووجوب تغييرها.
والمثال التالي يحاول الاتصال بالخادم، فإن فشل الاتصال بسبب انتهاء صلاحية كلمة السر، فإنه يغير كلمة السر القديمة:
Dim Csb As New SqlConnectionStringBuilder
Csb.DataSource = ".\SQLEXPRESS"
Csb.InitialCatalog = "Books"
Csb.UserID = "User1"
Csb.Password = "2009"
Dim Cn As New SqlConnection(Csb.ToString)
Try
      Cn.Open()
Catch ex As SqlException
      If ex.Number = 18487 OrElse ex.Number = 18488 Then
           SqlConnection.ChangePassword(Csb.ToString, "2010")
      End If
End Try
 

 إلغاء المساهمة ClearPool:
أرسل إلى هذه الوسيلة كائن الاتصال SqlConnection Object لإلغاء الاتصال الذي يمثله من رصيد الاتصالات المساهمة Connection Pool.. لاحظ أن هذا الاتصال قد يكون مستخدما في تلك اللحظة لأداء بعض الاستعلامات، لهذا يتم إنهاؤه في الحال، وسيظل مستخدما إلى حين إغلاقه باستخدام الوسيلة Close، وعندها لن يعود إلى رصيد الاتصالات المساهمة، بل سيغلق في الحال.. مثال:
SqlConnection.ClearPool(Cn)
 

 إلغاء كل أرصدة المساهمة ClearAllPools:
تغلق جميع الاتصالات الموجودة في رصيد الاتصالات المساهمة Connection Pool، وإذا كان بعضها مستخدما، لا يتم إنهاؤه إلى أن يتم استدعاء الوسيلة Close الخاصة به.. مثال:
SqlConnection.ClearAllPools( ) 

 إضافة إلى قائمة التعاملات المنتشرة EnlistDistributedTransaction:
مماثلة للوسيلة EnlistTransaction. 

 الحصول على الإحصائيات RetrieveStatistics:
تعيد مجموعة تمثل واجهة القاموس IDictionary، تحتوي على أزواج من المفاتيح Keys والقيم Values، تمثل إحصائيات الاتصال حتى هذه اللحظة.. ويمكنك استدعاء هذه الوسيلة أكثر من مرة على فترات، للحصول على أحدث قيم للإحصائيات.. لاحظ أنك لن تحصل على أي إحصائيات إلا إذا جعلت للخاصية StatisticsEnabled القيمة True أولا. 

 تصفير الإحصائيات ResetStatistics:
تعيد جميع قيم الإحصائيات إلى الصفر. 

كما تمتلك هذه الفئة الحدث التالي: 

  رسالة المعلومات InfoMessage:
ينطلق عندما يرسل الخادم رسالة تحذير أو خطأ.. والمعامل الثاني e لهذا الحدث من النوع SqlInfoMessageEventArgs، وهو يمتلك الخصائص التالية: 

*
Errors
تعيد مجموعة من النوع SqlErrorCollection، التي تمثل الواجهة ICollection، وكل عنصر من عناصرها من نوع الفئة SqlError، التي تحتوي على أحد الأخطاء أو التحذيرات التي أرسلها خادم سيكويل.. وسنتعرف على الفئة SqlError بعد قليل.
*
Message
تعيد نصا يشرح أول خطأ موجود في مجموعة الأخطاء Errors.. هذا مفيد إن كان هناك خطا واحد فقط.
*
Source
تعيد نصا يحدد اسم الكائن الذي تسبب في أول خطأ موجود في مجموعة الأخطاء Errors.. هذا مفيد إن كان هناك خطا واحد فقط.

 
من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.