هذا الشرح من كتاب قمت بانجازه وهو جاهز لكن يحتاج لبعض التدقيق والاضافات وانا هالايام مشغول نوعا ما لكن قريبا انتهي من الكتاب.
نستخدم الاداة OO40 لربط الاوراكل وتوجد هذه الاداة ضمن مجلدات الاوراكل
وتعبر هذه الاداه من اقوى الادوات على ربط الاوراكل بالفيجوال بيسك.
بعد الانتهاء من هذا الكتاب يكون باستطاعتك
انشاء تطبيقات وواجهات لقواعد البيانات
وسوف نتطرق لأغلب الادوات الموجودة في هذه الاداة.
1- orasession :
هذا الشيء يمثل الاساس في النموذج OO40 وهو يقوم بتشغيل التطبيق وانشاء نسخة من الخادم INPROC SERVER وهو يحتوي على وسائل لانشاء الاتصال بقاعدة بيانات اوراكل.
2- oradatabase :
يمثل اتصالا بقاعدة بيانات اوراكل وهو يقدم وسائل لتنفيذ عبارات sql
3- orasqlstmt :
وهو يستخدم لتنفيذ عبارات DDL مثل CREATE TABLE
4-oradynaset :
يمثل النتائج المعادة من عبارة sql وهو مؤشر في جانب العميل يمكن معالجته والتعامل معه
ويتم انشائه باستخدام العبارة createdynaset للشء oradatabase
وهنالك المزيد من الاشياء لكن سوف نتطرق لك واحدة في حينها
5- oraparameters :
يمثل متغير ربط في عبارة sql وهو يقدم وسائل لإنشاء ومعالجة قيم المعاملات
(يستخدم لتمرير متغيرات الاجراءات والدوال وعبارات sql )
6- oraobject :
يمثل نسخة من اشياء اوراكل المخزنه على شكل جدول
7- oraparametersarray
مثل الشيء oraparameters لكن يكون مصفوفة من المعاملات والمتغيرات
<span style='font-size:14pt;line-height:100%'>بدء العمل مع الاداة وطريقة الاتصال</span>
طريقة الاتصال بقاعدة بيانات اوراكل:
اولا:
نضيف قبل كل شي الاداة من قائمة project ثم reference ثم ابحث عن oracle objects for OLE 3.0 type library
ثم نقوم بتعريف ثلاث متغيرات :
الاول متغير من نوع oraseesion وهو لتكوين سيرفر مع القاعدة وفتح القاعدة.
الثاني متغير من نوع oradatabase وهو للاتصال مع قاعدة البيانات.
الثالث متغير من نوع oradynasetلتخزين السجلات المستتنتجة.
ويمن التعريف كمايلي:
Dim ses As orasession
Dim database As oradatabase
Dim dyn As OraDynaset
ثانيا/
نكون inprocserver والاتتصال بقاعدة البيانات وهذه ثابته دائم لاتتغيرفي أي عملية اتصال لابد من وجودهما
Set ses = CreateObject("oracleinprocserver.xorasession")
ثم نقوم بفتح قاعدة البيانات كمايلي:
Set database = ses.OpenDatabase("ddd"," scott/tiger",0&)
حيث:
Ses : هذا متغير orasession الذي تم فتحه سابقا.
OpenDatabase : وسيلة لفتح قاعدة البيانات.
ddd : هذا اسم قاعدة البيانات لديك وهو الاسم الذي اعطيته لقاعدة البيانات اثناء تنزيل الاوراكل.
" scott/tiger" : هذا اسم الحساب وكلمة المرور وهو افتراضي في اي قاعدة بيانات يوجد بها هذا المستخدم وكلمة مرورة .او يكون لك اسم مستخدم خاص بك وكلمة مرور له.
0& تمثل حالة القاعدة الابتدائية.
والعمليتان السابقتين وهما فتح الاتصال وفنح القاعدة لابد منهما في اي كود لكي تتصل بقاعدة البيانات.
ثالثا/
نقوم الان بكتابة الاستعلام الذي نريد من أي جدول في قاعدة البيانات كمايلي
mysql="select * from emp"
رابعا/
كيفيه تشغيل الاستعلام(فتح الاستعلام) وتخزين النتائج كما يلي
Set dyn = database. CreateDynaset (mysql, 0&)
وذلك باستخدام الامر CreateDynaset للشي oradatabase
حيث :
Mysql : تمثل المتغير الذي تم تخزين الاستعلام به وليس شرطا ان يكون نفس الاسم .
خامس/
بعد تنفيذ الاستعلام ولو فرضنا ان الجدول في الاستعلام السابق يحتوي على حقلين الاول empno والثاتي ename ونريد بعد تنفيذ الاستعلام ان يقوم بعرضهما في مربعين نص على النموذج
ويكون كمايلي :
Text1.Text = dyn.Fields("empno").Value
Text2.Text = dyn.Fields("ename").Value
وبالتالي يكون الكود كامل كمايلي:
Dim ses As orasession
Dim database As oradatabase
Dim dyn As OraDynaset
Set ses = CreateObject("oracleinprocserver.xorasession")
Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
sql = "select * from emp"
Set dyn = database.CreateDynaset(sql, 0&)
Text1.Text = dyn.Fields("empno")
Text2.Text = dyn.Fields("ename")
وبهذا انهينا طريقة الاتصال بالقاعدة والان لنبدء الابحار في وسائل هذه الاداة
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
اضافة , تحديث , حذف البيانات.
لنقم بتكوين جدول للقيم بالتطبيق عليه ولنفرض ان الجدول كمايلي:
salary job S_name S_no
الراتب الوظيفة الاسم الرقم
ولانشاء هذا الجدول نذهب الى sql * plus ونكتب الامر
Create table employee(
S_no char(9),
S_name varchar2(50),
Job varchar2(50),
Salary number(10));
وبهذا نكون قد انشاءنا الجدول
أ- الاضافة ADDNEW :
هذه الوسيلة تسمح باضافة الصفوف الجديدة إلى dynaset الذي قمنا بانشاءه ولكي نضيف صف جديد الى الجدول employee السابق نقوم بمايلي.
اولا نقوم بفتح الاتصال وتكوين dynaset كمايلي:
Dim ses As OraSession
Dim database As OraDatabase
Dim dyn As OraDynaset
Set ses = CreateObject("oracleinprocserver.xorasession")
Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
SQL = "select * from employee"
Set dyn = database.CreateDynaset(SQL, 0&)
ولكي تضيف صف نقوم بفتح dynaset للاضافة بالوسيلة addnew كمايلي:
dyn.AddNew
ثم نقوم باسناد القيم الجديدة لحقول dynaset كمايلي:
dyn.Fields("s_no").Value = "1000"
dyn.Fields("s_name").Value = "ddd"
dyn.Fields("job").Value = "programming"
dyn.Fields("salary").Value = "5500"
ثم نقوم بتثبيت هذه المدخلات بالقاعدة باستخدام الامر update لــ dynaset كمايلي: dyn.Update
وبالتالي يصبح الكود كامل كمايلي.
الكود كامل :
Dim ses As OraSession
Dim database As OraDatabase
Dim dyn As OraDynaset
Set ses = CreateObject("oracleinprocserver.xorasession")
Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
SQL = "select * from employee"
Set dyn = database.CreateDynaset(SQL, 0&)
dyn.AddNew
dyn.Fields("s_no").Value = "1000"
dyn.Fields("s_name").Value = "MOHAMMED"
dyn.Fields("job").Value = "programing"
dyn.Fields("salary").Value = "5500"
dyn.Update
MsgBox "تمت الاضافة بنجاح"
ويمكنك تطوير البرنامج السابق وجعله اكثر شمولية وذلك بجعل المدخلات يقوم بادخالها المستخدم وذلك كمايلي :
بانشاء فورم جديد ووضع به اربع مربعات نص وزر امر وداخل زر الامر اكتب الكود التالي:
Dim ses As OraSession
Dim database As OraDatabase
Dim dyn As OraDynaset
Set ses = CreateObject("oracleinprocserver.xorasession")
Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
SQL = "select * from employee"
Set dyn = database.CreateDynaset(SQL, 0&)
dyn.AddNew
dyn.Fields("s_no").Value = TEXT1.TEXT
dyn.Fields("s_name").Value = TEXT2.TEXT
dyn.Fields("job").Value = TEXT3.TEXT
dyn.Fields("salary").Value = TEXT4.TEXT
dyn.Update
MsgBox "تمت الاضافة بنجاح"
وبالتالي فان المكتوب باللون الاحمر هو الذي تم تبديله عن الكود السابق
قم بتطبيق المثال طبقا للخطوات السابقة وسوف تسعد بالنتائج....
ب – التعديل UPDAET :
لتعديل اي سجل موجود بالقاعدة نستخدم الامر edit لـ dynaset
كمايلي:
اولا نقوم بفتح الاتصال وتكوين dynaset كمايلي :
Dim ses As OraSession
Dim database As OraDatabase
Dim dyn As OraDynaset
Set ses = CreateObject("oracleinprocserver.xorasession")
Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
SQL = "select * from employee where s_no=1000"
Set dyn = database.CreateDynaset(SQL, 0&)
ثم نقوم بعملية التعديل كمايلي :
نقوم اولا يجعل سماحية التعديل على dynaset كمايلي
Dyn.edit
ثم نقوم باجراء التغير كمايلي
Dyn.fields("s_name").value="ali"
ثم نقوم بثبيت التعديل باستخدام الامر update لـ dynaset كمايلي:
Dyn.update
لناخذ مثال على ذلك :
في جدول employee قم بتعديل راتب الشخص الذي رقمه 1000 ؟
ويكون كود التعديل كمايلي:
Dim ses As OraSession
Dim database As OraDatabase
Dim dyn As OraDynaset
Set ses = CreateObject("oracleinprocserver.xorasession")
Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
SQL = "select * from employee where s_no=1000"
Set dyn = database.CreateDynaset(SQL, 0&)
Dyn.edit
Dyn.fields("salary").value="6000"
Dyn.update
MsgBox "تم التعديل"
ويهذا يكون تم التعديل على قاعدة البيانات.
ج- الحذف DELETE :
لحذف اي سجل موجود في القاعدة نستخدم delete لـ dynaset
وللبداية بحذف سجل
اولا نقوم بفتح الاتصال وتكوين dynaset كمايلي:
Dim ses As OraSession
Dim database As OraDatabase
Dim dyn As OraDynaset
Set ses = CreateObject("oracleinprocserver.xorasession")
Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
SQL = "select * from employee where s_no=1000"
Set dyn = database.CreateDynaset(SQL, 0&)
ثم نقوم بعملية الحذف كمايلي:
Dyn.delete
وبالتالي يصبح الكود كامل كمايلي:
Dim ses As OraSession
Dim database As OraDatabase
Dim dyn As OraDynaset
Set ses = CreateObject("oracleinprocserver.xorasession")
Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
SQL = "select * from employee where s_no=1000"
Set dyn = database.CreateDynaset(SQL, 0&)
dyn.Delete
MsgBox "تم الحذف"
وبهذا يتم الحذف
وراح إن شاء الله اضيف في وقت ثاني طريقة استخدام الكود نفسه مع الفيجوال نت مع تغير فرق بسيط