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

الصفحات

السبت، 28 يناير 2017

SqlParameterCollection Class


فئة مجموعة معاملات سيكويل
SqlParameterCollection Class 

هذه الفئة ترث الفئة DbParameterCollection، وهي لا تختلف عنها كثيرا إلا في أن عناصرها من نوع الفئة SqlParameter ، التي سنتعرف عليها بعد قليل.
كما أن للوسيلة Add الخاصة بهذه الفئة العديد من الصيغ التي من المفيد أن نتعرف عليها: 

 إضافة Add:
تضيف معاملا إلى مجموعة المعاملات، ولها الصيغ التالية:
1- الصيغة الأولى تستقبل معاملا واحدا من النوع SqlParameter.
2- الصيغة الثانية تستقبل نصا يمثل اسم المعامل وإحدى قيم المرقم SqlDbType التي توضح نوع المعامل.
3- الصيغة الثالثة تزيد على الصيغة السابقة بمعامل ثالث من النوع Integer، يستقبل حجم البيانات التي ستوضع في المعامل.
4- الصيغة الرابعة تزيد على الصيغة السابقة بمعامل، يستقبل اسم عمود في مجموعة البيانات DataSet ليربط المعامل به.
5- وهناك صيغة خامسة لكنها لم يعد مفضلا استخدامها، تستقبل اسم المعامل، وكائنا Object يحمل قيمته، وذلك بسبب التعارض بينها وبين الصيغة الثانية، لهذا تم إضافة وسيلة جديدة اسمها AddWithValue كبديل لهذه الصيغة. 

 إضافة بالقيمة AddWithValue:
تضيف معاملا إلى المجموعة، وهي تستقبل اسم المعامل، وكائنا Object يحمل قيمته.. وتعيد هذه الوسيلة مرجعا إلى المعامل الذي تم إنشاؤه.
لاحظ أنك تستطيع أن ترسل إلى المعامل الثاني لهذه الوسيلة قارئ بيانات DataReader أو جدول بيانات DataTable، لتتم قراءة كل الصفوف الموجودة فيهما ووضعها في المعامل.. هذا مفيد إذا كنت تتعامل مع إجراء مخزن يستقبل معاملا جدولا Table-Valued Parameter، وتريد أن ترسل إليه جدولا كاملا.. وستجد مثالا على هذا في المشروع TableValuedParameters.. في هذا المشروع نقرأ جدول المؤلفين في قارئ بيانات من النوع OledbDataReader، ثم نرسله كمعامل ثان إلى الوسيلة AddWithValue لاستخدامه كمعامل للإجراء المخزن InsertAuthors، وبهذا نستطيع إضافة المؤلفين من قاعدة بيانات آكسيس إلى قاعدة بيانات سيكويل سيرفر.
لاحظ أن قارئ البيانات يجب أن يظل مفتوحا هو والاتصال الذي يستنخدمه، لأن الوسيلة AddWithValue لا تنسخ السجلات من قارئ البيانات فعليا، ولا يتم نسخ هذه السجلات إلا عند استدعاء الوسيلة ExecuteNonQuery الخاصة بكائن الأمر الذي ينفذ الإجراء المخزن ويرسل إله المعامل الجدول. 

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

DbParameterCollection Class


فئة مجموعة معاملات قاعدة البيانات
DbParameterCollection Class 

هذه المجموعة تمثل الواجهة IDataParameterCollection، التي ترث واجهة القائمة IList.. وكل عنصر يضاف إلى المجموعة DbParameterCollection هو من نوع الفئة DbParameter.
ولا تحتوي هذه الفئة على أية خصائص أو وسائل جديدة غير ما تمثله من عناصر الواجهة.
لاحظ أن الفئة DbParameterCollection أساسية مجردة تجب وراثتها، لهذا ترثها كل من الفئات التالية:
OdbcParameterCollection Class
OleDbParameterCollection Class
SqlParameterCollection Class
OracleParameterCollection Class
ويعنينا هنا أن نتعرف على فئة مجموعة معاملات سيكويل SqlParameterCollection Class.

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

 

 

DbParameter Class


فئة معامل قاعدة البيانات DbParameter Class 

هذه الفئة معرفة في النطاق System.Data.Common، وهي فئة أساسية مجردة تجب وراثتها، تمثل الواجهة IDbDataParameter مما يعني أنها تمثل أيضا الواجهة IDataParameter، وبالتالي فهي تملك كل خصائصهما، ولا تزيد عليها إلا خاصية واحدة جديدة وهي: 

 تمثيل قيمة منعدمة في عمود المصدر SourceColumnNullMapping:
إذا جعلت قيمة هذه الخاصية True، فسيعني هذا أن هذا المعامل يستخدم لإخبارك إن كان عمود المصدر SourceColumn في مجموعة البيانات DataSet فارغا أم لا، حيث تكون قيمة المعامل 0 إن كان العمود فارغا، وتكون قيمته 1 إن كان العمود يحتوي على أي قيمة.. هذا مفيد عند تعريف استعلامات التحديث، لأن مقارنة أي خانتين قيمتهما Null تكون نتيجتها False رغم أن الخانتين متساويتين فعلا!.. لهذا يجب أن نتأكد قبل إجراء المقارنة إن كانت الخانتين فارغتين أم لا.. وسنرى كيف نستخدم هذه الطريقة عند التعرف على موصل البيانات في فصل لاحق. 

كما تمتلك هذه الفئة وسيلة واحدة، وهي: 

 تصفير النوع ResetDbType:
تعيد الخاصية DbType إلى قيمتها الافتراضية. 

والفئات التالية ترث هذه الفئة:
OdbcParameter Class
OleDbParameter Class
SqlParameter Class
OracleParameter Class

وسنقتصر هنا على التعرف على الفئة SqlParameter. 

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


 

IDbDataParameter Interface


واجهة معامل بيانات قاعدة البيانات
      IDbDataParameter Interface 

هذه الواجهة ترث الواجهة IDataParameter، وهي تمتلك بعض الخصائص الإضافية التي تضيف مزيدا من التحكم في القيم التي يقبلها المعامل.. وهذه الخصائص هي: 

 الحجم Size:
تحدد أقصى حجم مسموح به للمعامل بالوحدة الثنائية Byte.. والقيمة الافتراضية لهذه الخاصية تستنتج من نوع المعامل، فإن كان عددا صحيحا على سبيل المثال، تكون قيمتها 4، وإن كان المعامل يحتوي على مصفوفة فإن هذه الخاصية تأخذ طول المصفوفة.. لاحظ أنك لو صغرت قيمة هذه الخاصية عن حجم البيانات، فسيتم أخذ جزء من هذه البيانات فقط وإسقاط الجزء الزائد. 

 الدقة Precision:
تحدد أكبر عدد مسموح به من الخانات الرقمية في القيمة التي يقبلها المعامل.. والقيمة الافتراضية هي 0، وهي تعني عدم فرض قيود على عدد الخانات، وترك ذلك لمزود قاعدة البيانات. 

 المقياس Scale:
تحدد أكبر عدد مسموح به من الخانات العشرية في القيمة التي يقبلها المعامل.. ولو زاد عدد الخانات عن هذا الرقم يتم تقريبه.. والقيمة الافتراضية هي 0 . 

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

 

IDataParameter Interface


 واجهة معامل البيانات IDataParameter Interface 

هذه الواجهة معرفة في النطاق System.Data، وهي تمتلك الخصائص التالية: 

 اسم المعامل ParameterName:
تحدد اسم المعامل، مع ملاحظة أنه يبدأ بالرمز @، مثل @UserName. 

 هل هو منعدم IsNullable:
إذا جعلت قيمة هذه الخاصية True، فسيقبل المعامل القيمة DBNull.. والقيمة الافتراضية هي False. 

 الاتجاه Direction:
تحدد اتجاه المعامل، وهي تأخذ إحدى قيم المرقم ParameterDirection. 

 القيمة Value:
تقرأ أو تغير قيمة المعامل.. مزيد من التفاصيل. 

 النوع DbType:
تحدد نوع المعامل، وهي تأخذ إحدى قيم المرقم DbType. 

 عمود المصدر SourceColumn:
تحدد اسم العمود في مجموعة البيانات DataSet الذي سيتم ربطه بالمعامل.. المزيد من التفاصيل. 

 إصدار المصدر IDataParameter.SourceVersion:
تحدد نوع القيمة التي ستوضع في المعامل.. المزيد من التفاصيل. 

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

IDataParameter.SourceVersion


 إصدار المصدر IDataParameter.SourceVersion:
تحدد هذه الخاصية نوع القيمة التي ستوضع في المعامل.. هذا مفيد عند استخدام المعامل لتحديث مجموعة البيانات DataSet، لأن كل خانة في مجموعة البيانات تحتفظ بعدة أنواع من القيم، مثل القيمة الأصلية (القادمة من قاعدة البيانات)، والقيمة الحالية (القيمة الجديدة التي أدخلها المستخدم).. وتأخذ هذه الخاصية إحدى قيم المرقم DataRowVersion.. وسنتعرف على هذا الأمر بتفصيل أكبر لاحقا عند التعرف على مجموعة البيانات.

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

 

 

 

IDataParameter.SourceColumn


 عمود المصدر IDataParameter.SourceColumn:
تحدد هذه الخاصية اسم العمود في مجموعة البيانات DataSet الذي سيتم ربطه بالمعامل.. هذا مفيد عند حفظ التغيرات من مجموعة البيانات إلى قاعدة البيانات باستخدام أمر التحديث Update Command.. هذه هي الخطوات التي تتم:
- يعرّف أمر التحديث Update Command معاملا لكل عمود في مجموعة البيانات، ويضع اسم العمود في الخاصية SourceColumn لكل معامل.
- عند تنفيذ عملية التحديث، يقوم موصل البيانات DataAdapter بالمرور على صفوف مجموعة البيانات واحدا تلو الآخر وتنفيذ أمر التحديث على كل منها على حدة.
- لتحديث أي صف، يضع موصل البيانات في كل معامل من معاملات أمر التحديث، قيمة الخانة الموجودة في العمود المحدد في الخاصية DbParameter.SourceColumn، وبهذا يمكن تنفيذ استعلام التحديث لكل صف بصورة صحيحة.

وستفهم هذه الأمور بصورة أوضح عندما نتعرف على موصل البيانات DataAdapter ومجموعة البيانات DataSet.


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

DbType Enum

يمتلك المرقم DbType القيم التالية: 

الثابت
معناه
مجال القيم أو طول المتغير
SByte
وحدة ثنائية بإشارة.
من -128 إلى 127
Byte
وحدة ثنائية موجبة.
من 0 إلى 255
Binary
بيانات ثنائية
من 1 بايت إلى 8000 بايت
Boolean
قيمة منطقية
False أو True
Int16
عدد قصير
من -32768 إلى 32767
UInt16
عدد قصير موجب
من 0 إلى 65535
Int32
عدد صحيح
من -2147483648
إلى 2147483647
UInt32
عدد صحيح موجب
من 0 إلى 4294967295
Int64
عدد طويل
من -9223372036854775808
إلى 9223372036854775807
UInt64
عدد طويل موجب
من 0 إلى 18446744073709551615
Single
عدد مفرد
من 1.5 × (10 ^ -45)
إلى 3.4 × (10^38)
بدقة 7 خانات عشرية.
Double
عدد مزدوج
من 5.0 × (10^-324)
إلى 1.7 × (10^308)
بدقة 15 خانة عشرية.
Currency
عملة
من -2 ^ 63 إلى (2 ^ 63) -1
بدقة 4 خانات عشرية.
Decimal
عدد عشري
من 1.0 × (10^-28)
إلى 7.9 × (10^28)
بدقة تصل إلى 28 خانة عشرية.
VarNumeric
رقم متغير
قيمة رقمية متغيرة الطول، تقبل أيا من الأنواع السابقة.
Guid
معــرف عــام متفــرد
Time
وقت
وقت بدون تاريخ
Date
تاريخ
تاريخ بدون وقت
DateTime
تاريخ ووقت
تقبل تواريخ بين 1/1/1753
و 31/12/9999
DateTime2
تاريخ ووقت
تقبل تواريخ بين 1/1/1
و 31/12/9999
DateTimeOffset
إزاحة الوقت والتاريخ
String
نص
نص متغير الطول، مكون من حروف موسعة Unicode.
StringFixed
Length
نص ثابت الطول
نص ثابت الطول، مكون من حروف موسعة Unicode.
AnsiString
نص قياسي
نص متغير الطول، مكون من حروف قياسية بترميز ASCII.
AnsiString
Fixed
Length
نص قياسي ثابت الطول
نص ثابت الطول، مكون من حروف قياسية بترميز ASCII.
Xml
XML
صفحة XML أو جزء منها.
Object
كائن
أي نوع غير موجود في الأنواع السابقة.