تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التعامل مع قواعد البيانات Sql Server 2005 خطوة بخطوة
#2
المرحلة الرابعة
______
الاستعلامات
_________

كما ذكرنا ان قاعدة البيانات تستخدم لحفظ المعلومات بداخلها لاسترجاعها وقت الحاجة
وبما انا خزنا البيانات فعلينا الان استرجاعها لطباعتها او مراجعتها او التعديل عليها او حتى حذفها

في البداية يجب علينا تعريف متغير هام لتحميل البيانات من قاعدة البيانات اليه لاظهارها في البرنامج
وهو من نوع ( SqlDataReader )

كما يلي
كود :
[SIZE=2][color=#0000ff]Dim [/color][/SIZE][SIZE=2]DR [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] SqlDataReader[/SIZE]
شرح الكود السابق

قمنا بتعريف متغير باسم ( DR ) من نوع ( SqlDataReader )

بما انا عرفنا في الدرس السابق متغير ( SqlStr ) في الكلاس فلا يجب تعريفه مرة اخرة
وسنستحدمه في نفس الاستخدام
وهو اسناد امر ال ( SQL ) اليه

الان اذا اردنا استرجاع عدة عناصر من قاعدة البيانات وليست جميعها
نقوم بكتابة اسماء الحقول المطلوبة
اما اذا اردنا جميع الحقول فيكفي ان نستدعيها جميعا برمز ( * )

فالتفرض انا اردنا استرجاع الحقول التالية من قاعدة البيانات
1- UserId
2-Username

فقط

نكتب امر الاستعلام وهو على النمط التالي

كود :
select field1,field2 from Table1 Where(Table1.Field1=Value)
وعليه نطبق

كما ذكرنا نريد حقلين
فتكون جملة الاستعام كالتالي
رمز برمجي:
كود :
[SIZE=2]SqlStr = [/SIZE][SIZE=2][color=#a31515]"SELECT UserId,Username from VB WHERE (VB.UserID='"[/color][/SIZE][SIZE=2] & TxtSearch.Text.Trim & [/SIZE][SIZE=2][color=#a31515]"')"[/color][/SIZE]
شرح الكود السابق

Select= هي جملة الاستعلام
UserId,Username= هما الحقلان المطلوبان للاستعلام عنهم
from= للتحديد
VB= اسم الجدول
Where=لاسترجاع قيم محددة حسب شروط
(VB.UserID='" & TxtSearch.Text.Trim & "')"= الشرط .... حيث طلبنا الحقلين شرط ان يساوي الـ ( UserId ) ما هو موجود داخل الـ ( TextBox )

بعد ان كتبنا جملة الاستعلام
بقي الان علينا تنفيذها

بما انا عرفنا الاتصال سابقا
وعرفنا جملة الامر التي ستقوم بتنفيذ جملة الاستعلام و هي ( Cmd )
سنقوم اولا بفت الاتصال مع قاعدة البيانات
كالتالي
كود :
[SIZE=2]Con.Open()[/SIZE]
الان تحميل جملة الاستعلام و الاتصال داخل امر التنفيذ
كالتالي
كود :
[SIZE=2]Cmd = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] SqlCommand(SqlStr, Con)[/SIZE]
شرح الكود السابقة
قمنا بطلب ( Cmd ) امر جديد لتنفيذ استعلام جديد و هو موجود داخل ( SqlStr ) و سيتم تنفيذه داخل الاتصال الموجود بـ ( Con )
كنا سابقا بالتخزين نكت الكود التالي لتنفيذ العملية
كود :
[SIZE=2]Cmd.ExecuteReader()[/SIZE]
لكنا الان نريد سترجاع قيم
و بما انا عرفنا DataReader وهي ذاكرة لقرائة المعلومات
نقوم باسناد القيم اليها بالكود التالي بدل القديم
كود :
[SIZE=2]DR = Cmd.ExecuteReader[/SIZE]
اصبح الان لدينا معلومات داخل ال( DR )

اولا

نقوم بالتأكد من انها قرأت بيانات .. بمعنا اخر ( هل القيم المطلوبة موجودة ؟ )

اذا كانت القيم موجودة سنقرها عن طريق جملة While

وتخزينها في امكانها حسب ما نريد .. اما في TextBox او في متغيرات

نكتب الكود التالي
رمز برمجي:
كود :
[SIZE=2][color=#0000ff]If [/color][/SIZE][SIZE=2]DR.HasRows [/SIZE][SIZE=2][COLOR=#0000ff]Then
[/COLOR][/SIZE]   [SIZE=2][color=#0000ff]While[/color][/SIZE][SIZE=2] DR.Read
[/SIZE] [SIZE=2]TextBox5.Text = DR([/SIZE][SIZE=2][color=#a31515]"UserID"[/color][/SIZE][SIZE=2])
[/SIZE] [SIZE=2]TextBox6.Text = DR([/SIZE][SIZE=2][color=#a31515]"Username"[/color][/SIZE][SIZE=2])
[/SIZE] [SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][COLOR=#0000ff]While
[/COLOR][/SIZE] [SIZE=2][COLOR=#0000ff]Else
[/COLOR][/SIZE] [SIZE=2]MsgBox([/SIZE][SIZE=2][color=#a31515]"Not Found"[/color][/SIZE][SIZE=2])
[/SIZE]   [SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]If[/color][/SIZE]
شرح الكود السابق


If DR.HasRows Then = اذا كان هناك بيانات داخل الـ ( DR )
اذا كان هانك بيانات ينتقل الى جملة While لقراءة البيانات

[SIZE=2]While DR.Read = طالما يتم قرأئة بيانات من الـ DR [/SIZE]

[SIZE=2]TextBox5.Text = DR([SIZE=2]"UserID")[/SIZE][/SIZE]
[SIZE=2][SIZE=2]TextBox6.Text = DR(
"Username")[/SIZE]

خزن القيم المطلوبة في TextBox

[SIZE=2]End
While= الانتهاء من القرائة والخروج من جملة الدوران

في حالة لم يكن هناك بيانات داخل الـ DR
سيقوم بائظهار الرسالة في ( Else )
وهي
MsgBox([SIZE=2]"Not Found")[/SIZE]

الان قمنا بالقراءة وانتهينا
سنقوم الان بقطع الاتصال

هناك عيوب لهذه الطريقة وهي انها تاخذ اخر قيمة من القيم التي تراها
والحل هو التخزين في مصفوفة او ComboBox

وكما ذكرنا لو اردنا استرجاع جميع الحقول في الجدول تصبح جملة الاستعلام على الشكل التالي

[/SIZE]
[/SIZE]
كود :
[SIZE=2]SqlStr = [/SIZE][SIZE=2][color=#a31515]"SELECT * from VB WHERE (VB.UserID='"[/color][/SIZE][SIZE=2] & TxtSearch.Text.Trim & [/SIZE][SIZE=2][color=#a31515]"')"[/color][/SIZE]
الكود الكامل للعملية
كود :
[SIZE=2][color=#0000ff]Dim [/color][/SIZE][SIZE=2]DR [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] SqlDataReader[/SIZE]
   [SIZE=2]SqlStr = [/SIZE][SIZE=2][color=#a31515]"SELECT UserId,Username from VB WHERE (VB.UserID='"[/color][/SIZE][SIZE=2] & TxtSearch.Text.Trim & [/SIZE][SIZE=2][color=#a31515]"')"[/color][/SIZE]
[SIZE=2]Con.Open()[/SIZE]
[SIZE=2]Cmd = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] SqlCommand(SqlStr, Con)[/SIZE]
[SIZE=2]DR = Cmd.ExecuteReader
[/SIZE] [SIZE=2][color=#0000ff]If[/color][/SIZE][SIZE=2] DR.HasRows [/SIZE][SIZE=2][COLOR=#0000ff]Then
[/COLOR][/SIZE] [SIZE=2][color=#0000ff]While[/color][/SIZE][SIZE=2] DR.Read
[/SIZE] [SIZE=2]TextBox5.Text = DR([/SIZE][SIZE=2][color=#a31515]"UserID"[/color][/SIZE][SIZE=2])[/SIZE]
[SIZE=2]TextBox6.Text = DR([/SIZE][SIZE=2][color=#a31515]"Username"[/color][/SIZE][SIZE=2])
[/SIZE] [SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]While[/color][/SIZE]
[SIZE=2][COLOR=#0000ff]Else
[/COLOR][/SIZE] [SIZE=2]MsgBox([/SIZE] [SIZE=2][color=#a31515]"Not Found"[/color][/SIZE][SIZE=2])[/SIZE]
   [SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]If[/color][/SIZE]
[SIZE=2]Con.Close[/SIZE]
يتبع...
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
التعامل مع قواعد البيانات Sql Server 2005 خطوة بخطوة - بواسطة Mr. DotNet_mybb_import4619 - 28-09-12, 03:31 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  طريقة عرض الأيام باللغة العربية في استعلام SQL Server ggtt17121985 0 2,158 12-10-23, 10:22 PM
آخر رد: ggtt17121985
  مساعده في تثبيت SQL Server Owz 1 800 22-09-23, 01:54 AM
آخر رد: Taha Okla
  [سؤال] حساب كمية الدرزن و الحبة في قاعدة البيانات FRS4002 0 1,500 17-01-22, 04:57 AM
آخر رد: FRS4002
  [سؤال] استفسار بخصوص استدعاء البيانات ارجو المساعدة Abo_Hegab 0 1,300 06-12-21, 01:12 AM
آخر رد: Abo_Hegab
Photo [SQL] رسالة خطأ عند تنصيب sql server 2008 عثمان محمد جبور 2 2,082 07-10-21, 09:02 AM
آخر رد: عثمان محمد جبور
  طريقة إنشاء ملف سكربت لقاعدة البيانات مع الاحتفاظ بالبيانات ملهمـ 0 2,273 06-04-21, 02:33 AM
آخر رد: ملهمـ
  تاريخ تنصيب ال SQL Server وتاريخ الانتهاء للنسخة ال Evaluation عمر المستشار 1 3,499 21-01-21, 02:00 PM
آخر رد: akrem72
Star [سؤال] هل يمكن اضافة بيانات ل قواعد sql ب استخدام رساله نصيه sms Ayman abdullah 0 2,200 09-05-20, 11:06 AM
آخر رد: Ayman abdullah
  دورة في برنامج SQL Server 2008 تحت إشراف الاستاذ المهندس أحمد النجار ابو ابراهيم 2 6,586 15-04-20, 06:26 PM
آخر رد: nizar haider
  استفسار حول SQL SERVER MANGER mne3000 1 1,998 05-04-20, 01:21 AM
آخر رد: محمد كريّم

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


يقوم بقرائة الموضوع: