Follow along with the video below to see how to install our site as a web app on your home screen.
ملاحظة: This feature may not be available in some browsers.
منقولهذا الشرح من كتاب قمت بانجازه وهو جاهز لكن يحتاج لبعض التدقيق والاضافات وانا هالايام مشغول نوعا ما لكن قريبا انتهي من الكتاب.
نستخدم الاداة 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لتخزين السجلات المستتنتجة.
ويمن التعريف كمايلي:
ثانيا/Rich (BB code):Dim ses As orasession Dim database As oradatabase Dim dyn As OraDynaset
نكون inprocserver والاتتصال بقاعدة البيانات وهذه ثابته دائم لاتتغيرفي أي عملية اتصال لابد من وجودهما
ثم نقوم بفتح قاعدة البيانات كمايلي:Rich (BB code):Set ses = CreateObject("oracleinprocserver.xorasession")
حيث:Rich (BB code):Set database = ses.OpenDatabase("ddd"," scott/tiger",0&)
Ses : هذا متغير orasession الذي تم فتحه سابقا.
OpenDatabase : وسيلة لفتح قاعدة البيانات.
ddd : هذا اسم قاعدة البيانات لديك وهو الاسم الذي اعطيته لقاعدة البيانات اثناء تنزيل الاوراكل.
" scott/tiger" : هذا اسم الحساب وكلمة المرور وهو افتراضي في اي قاعدة بيانات يوجد بها هذا المستخدم وكلمة مرورة .او يكون لك اسم مستخدم خاص بك وكلمة مرور له.
0& تمثل حالة القاعدة الابتدائية.
والعمليتان السابقتين وهما فتح الاتصال وفنح القاعدة لابد منهما في اي كود لكي تتصل بقاعدة البيانات.
ثالثا/
نقوم الان بكتابة الاستعلام الذي نريد من أي جدول في قاعدة البيانات كمايلي
mysql="select * from emp"
رابعا/
كيفيه تشغيل الاستعلام(فتح الاستعلام) وتخزين النتائج كما يلي
وذلك باستخدام الامر CreateDynaset للشي oradatabaseRich (BB code):Set dyn = database. CreateDynaset (mysql, 0&)
حيث :
Mysql : تمثل المتغير الذي تم تخزين الاستعلام به وليس شرطا ان يكون نفس الاسم .
خامس/
بعد تنفيذ الاستعلام ولو فرضنا ان الجدول في الاستعلام السابق يحتوي على حقلين الاول empno والثاتي ename ونريد بعد تنفيذ الاستعلام ان يقوم بعرضهما في مربعين نص على النموذج
ويكون كمايلي :
وبالتالي يكون الكود كامل كمايلي:Rich (BB code):Text1.Text = dyn.Fields("empno").Value Text2.Text = dyn.Fields("ename").Value
وبهذا انهينا طريقة الاتصال بالقاعدة والان لنبدء الابحار في وسائل هذه الاداةRich (BB code):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 ونكتب الامر
Rich (BB code):Create table employee( S_no char(9), S_name varchar2(50), Job varchar2(50), Salary number(10));
وبهذا نكون قد انشاءنا الجدول
أ- الاضافة ADDNEW :
هذه الوسيلة تسمح باضافة الصفوف الجديدة إلى dynaset الذي قمنا بانشاءه ولكي نضيف صف جديد الى الجدول employee السابق نقوم بمايلي.
اولا نقوم بفتح الاتصال وتكوين dynaset كمايلي:
ولكي تضيف صف نقوم بفتح dynaset للاضافة بالوسيلة addnew كمايلي:Rich (BB code):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
ثم نقوم باسناد القيم الجديدة لحقول dynaset كمايلي:
Rich (BB code):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
وبالتالي يصبح الكود كامل كمايلي.
الكود كامل :
ويمكنك تطوير البرنامج السابق وجعله اكثر شمولية وذلك بجعل المدخلات يقوم بادخالها المستخدم وذلك كمايلي :Rich (BB code):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 "تمت الاضافة بنجاح"
بانشاء فورم جديد ووضع به اربع مربعات نص وزر امر وداخل زر الامر اكتب الكود التالي:
وبالتالي فان المكتوب باللون الاحمر هو الذي تم تبديله عن الكود السابقRich (BB code):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 كمايلي :
ثم نقوم بعملية التعديل كمايلي :Rich (BB code):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 ؟
ويكون كود التعديل كمايلي:
ويهذا يكون تم التعديل على قاعدة البيانات.Rich (BB code):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 كمايلي:
وبهذا يتم الحذفRich (BB code):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 "تم الحذف"
وراح انشاءالله اضيف في وقت ثاني طريقة استخدام الكود نفسه مع الفيجوال نت مع تغير فرق بسيط
[snapback]170774[/snapback]