تمرير القيم إلى جمل الاستعلام:
افترض
أنك تريد الحصول على كتب "توفيق الحكيم" من قاعدة البيانات.. في هذه
الحالة يمكنك وضع جملة SQL
التالية في الخاصية CommandText لكائن الأمر (وليكن اسمه Cmd):
Cmd.CommandText = "SELECT
Books.Book " +
"FROM Authors, Books " +
"WHERE Authors.ID = AuthorID
" +
"AND Authors.Author = 'توفيق
الحكيم'"
ولكن،
هل تظن أنك ستكتب الجملة السابقة في أي تطبيق عملي فعلا؟.. هل ستقتصر وظيفة
برنامجك على عرض كتب مؤلف واحد فقط، أم أنك ستسمح للمستخدم باختيار المؤلف الذي يريده
ليعرض له البرنامج كتب هذا المؤلف؟
المنطقي
والعملي، هو أن تضع على النموذج مربع نص (وليكن اسمه TxtAuthor) ليكتب فيه المستخدم اسم المؤلف، ومن ثم تعرض له كتبه.. في مثل
هذه الحالة، عليك تعديل نص الاستعلام السابق ليصير كالتالي:
Cmd.CommandText = "SELECT Books.Book
" +
"FROM Authors, Books " +
"WHERE Authors.ID = AuthorID
" +
"AND Authors.Author = '" +
TxtAuthor.Text +"'"
حيث
استخدمنا طريقة تشبيك النصوص في الكود، لإضافة النص الموجود في مربع النص إلى جملة
الاستعلام، وبهذا حصلنا على جملة استعلام مرنة، تستطيع البحث عن اسم أي مؤلف يريده
المستخدم.
لكن
هذه الطريقة تحتوي على ثغرة قاتلة، تسمح للأشقياء بتدمير قاعدة بياناتك وربما نظام
التشغيل الذي يوجد عليه خادم سيكويل لو أرادوا!
كيف؟..
هذا هو موضوع الفقرة التالية: دس الاستعلامات SQL Injection.
من
كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.