بسم الله والحمد لله والصلاة والسلام على رسول الله
اليوم ان شاء الله بنات هنحاول نجمل الموضوع ال
database من ناحية عملية بإذن الله تبارك تعالى ومن
ثم هنعرج على ربط ال graphical user interface مع
يعني كيف ال application يجمع التاني تاني يجمع ال
databaseأو يكون مصدرها database والـ application
تبع graphical user interface وإن كنت هركز على شغلة
اللي هي ال Jtable في محاضرة اليوم ان شاء الله
تبارك وتعالى طبعا من البداية أحدد معاك من الصفر في
ال application احنا كنا
سابقا اتكلمنا انه لازم انت تعملي download لل
driver الخاص
Java Database Connectivity Project 2 بتعملها
download من الموقع الخاص بالشركة وعلى سبيل المثال
انا بدي افتح ال driver او ال browser عندي هان لو
انا بدي انزله ل MySQL ل MySQL انا already نزلته
سابقا وموجود عندي هان على ال folder هي الملف jar
fileبس هورجيك هنا كيف انت لو بدك تعملي له download
عشان تقدر تربط الأمور صح الان انت بمجرد انك تبدأ
application احنا بدأنا project جديد قولنا الخطوة
رقم واحد اني بدي اعمل download من ال browser
anyway بدي اروح اربط او اضيف لل driver هذا اللي هو
ال jar file على ال library اللي عندي مفتاح ال
mouse اليمين على ال projectbuild path add external
archives مفتاح الموسيقى اليمين او من خصائص ال
project build path add external archive وبتحدد
المسار وين الملف هذا موجود بال folder انا هينضيفه
هنا هى الملف حسب المسار اللى انا خزنه فيهopen مش
هتحسي ولا شغلة جديدة اللي غير صار فيه عندك a new
library عنوانها referenced library واضف عليها ال
jar file اللي موجود عندك هذه الخطوة الأساسية في ال
application اللي عندك الخطوة .. الآن بعد هيك بصير
كله في داخل أو شغل .. شغل أو داخل ال code اللي أنت
بدك تعتمدي عليه هذه class ال .. دي بي connect بدي
أسميه
وأنا بدي أوريك ال database تبعتي المفروض البراوزر
يكون اشتغل وخلاص هاي مثلا بدي لل mysql mysql java
database connectivity مباشرة قال ليش driver وهي
mysql download connector وديني على ال connector
مباشرة
و بقدر هان لو طلعتي هيسألك ايش ال platform تبعتك
هيو Connector DevReference Connector J8 الى اخره
في الاخر تحدد ال platform اللي انت بتشتغل عليها ال
platform انتبنت و بتقولي له ايش download هنزلك
ياملة في مضغوط بتفكيه و بترده فيه على الرابط اللي
عندك ال MySQL اللي عندي انا localhost ال database
تبعتي شغالة و بدي اسمهاtestdb هيها وفيها ال tables
ال table اللي اسمه students فيه مجموعة من الطلبة
او فيه مجموعة من ال attributes اربعة attributes او
خمسة student id name gender و gba او department و
gba تمام يعني انا الآن جاهز ان ابدأ اكتب ال java
او اوصل العناصر مع بعضها احنا قلنا بدي ابدأ في
عملية ال registration class
.for name وقلنا
مع كل class فى driver خاص اللى هو تبع ال mysql.com
.mysql وإحنا قلنا إيش بدنا إيش نحفظه dot java
database connectivity dot driver يارب ما أكون غلط
فيه أنا الآن بنتأكد منهلأن كمان مرة بقولك انت
ماتحفظهوش مش لازم ان احنا ايش نحفظه لو بدنا نرجع
بشكل سريع لل slides من بداية خالص عن ال connection
بس
فرجت معايا ال capital letter اللي في كلمة driver
فانا ممكن اريح نفسي و اعملها copy و paste عشان
تكون الأمور في ال safe side ان شاء الله تمامهذه
لازم تكون ضمن الـ try لانها بتعمل erase ل
exception مافيش عندي مشكلة الخطوة التانية بدي أبدأ
في عملية ال connection ال connection بدي أخد
object من نوع connection بدي أسميه C على سبيل
المثال قلنا من ال driver manager dot
GET CONNECTION وقلنا مع الـ GET CONNECTION بيطلب
مني تلت شغلات الـ URL ممتاز
الـ URL هو كلهم طبعا بياخدهم as a string تمام؟
قلنا الـ URL لكل language أو لكل database
management system اللي لها URL خاص فيها هذه الـ
MySQL
بس الان هذه بدها مني ايش؟ بدي اغير ال values اللي
موجودة عندى هنا ببدأ من عند ال hosting اسم الجهاز
او ال server اللى عليه ال database اللى عندي انا
ال database موجودة على ال local server على ال
local device اللى انا بشتر عليه ال local machine
1270001
ال board بقدر انا اجيب ال board و اتأكد منه هيه
بروح علىالـ MySQL شغالة على الـ port 3306 اسم
ال database قبل قليل testdb وهذا بيكون as a string
طبعا هذا البراميتر الأول البراميتر التاني ال user
name root ماغيرتش في ال password عندك ولا حاجة
التالت بدون passwordوخلصت هيك ان اكون حصلت على ال
connection و ال connection تبعتي صحيحة مافيش فيها
اي مشاكل خطبة رقم تلاتة ادني او احصل من ال
connection object على object statement او
statement object statement S
تساوي connection اللي هي C dot create statement
وقلنا مع ال create statement ممكن انا في حالة ال
result set او احدد ال result set ال style تكون
scrollable او تكون updatable حسب الحاجة اللي انا
بدي اشتغل عليها by default هي not scrollable تمام
لو انا حصلت على result set و not updatable فانا
مرة واحدة اللي انا شغال هروح اقوله result set dot
أنا قلنا في الأول بتكلم على scrollable type scroll
insensitive أو sensitive قلنا sensitive يعني لو
صار في أي تغيير على ال database و أنا بشتغل على
result set أشوف التغيير هذا طالما ال result set is
open والبرامير التاني البرامير التاني ايش قلنا؟
اكون concurrent result set dot concurrent وقلنا
خليها ايش updatable
وبهيك صارت ان انا الآن عند ال statement جاهزة
ومافيش فيها اي مشكلة الخطوة بعد هي كانت كل شغل
بيتركز على صياغة ال select statement او ال SQL
اللي انا بدي اشتغل عليها شو تكون وطبعا هذه بتكون
من خلال او بتتعرف as a string SQL بدي اسميها
وهنا بدك تكتب الـ select statement او ال insert و
ال update و ال delete حسب حاجتك حسب حاجتك Ctrl
Z
عشان تشتغل على نفس ال exception عشان تشتغل على
exception يعني الآن بدي ابدأ مع ال select هقوله
select star
from ال students و لاحظى وين تم تحديد اسم الجدول
فى داخل ال statement ال SQL لسه فى داخل ال SQL
بعيدا عن ال connection ال connection مطلب منك بس
اسم ال database اسم ال database تمام وقولنا احنا
مع ال statement فى عندي تلت جمل الأولى execute
وقولنا
هذه بترجع ال boolean valueو في عندي execute update
execute
update execute
update وهذه ستعود لي integer
تمام؟ وعندي الأخيرة اللي هي execute query و
بترجعلي ب data من نوع result set الان مين بتحدد مع
مين اشتغل معاهم هدول طبيعة ال SQL اللي موجودة
طبيعة ال SQL اللي موجودة الان إذا كانت هي select
statement معناته بترجعي ب dataترجع بـ data و ال
data هذه بتكون as a virtual table نتخيلها هيك
بمعناته بتلزم ن execute query اللي هي هترجع ليه
بال data أو من result set object result set R
بدها تساويطيب والتنتين اللي فوق لو كانت اللي فوق
DDL data definition language بعتمد مع ال execute
أسهل ليش؟ لأنه لا بهمني عدد ولا بهمني أشوف data
بهمني يقول اتنفذت أو ما اتنفذت لو كانت ال select
أو ال SQL اللي عندي هي عبارة عن DML بهمني أعرف عدد
ال roles اللي اتأثرت بالجملة هذه فبلجأ للخيار
الثاني بلجأ للخيار التاني و طبعا قولنا هذه بترجع
integer نسميها ال count فيه
C عند ال connection ال count ال R count اختصار
اللي هو count و هان قولنا Boolean done
وبالتالي
هدولة بتنتهي بالنسبة ليأنا بدى أقفله لأنه مش هشتغل
عليهم الان مطلقا طيب لو أنا جيب ال DML و كتبتها في
داخل ال query handle إيش بتتوجع يصير عندي؟ لو أنا
أجيتها و قلتله مثلا delete
from
students و
روحت أنفذماذا ستحصل عندك؟ إرار؟ هل تعرفين السبب
للإرار؟ هتلاقي الكتاب اللي فيها فوجها .. دبلكيتها
في عالم آخر مش مشكلة الفكرة كانت فعليا هذا ال
result أو هذا ال statement .. دلوقت عندما شغلت
application تبعنا شغلت application مختلف run as
Java applicationCannot issue data manipulation
statement with executed query بقدرش يتعامل مع ال
data manipulation ال DML مع ال executed query ليش؟
لأنها المفروض ان يرجع ب result set لكن هذه ال data
مافيش فيها result set وعشان هيك في ال runtime
بديكي اقرار تمام معناته احنا هنا SQL نفذناأو حصلنا
على الـ ResultSet الان بدي أعمل Fetch لل data هروح
أقوله while ResultSet.next يعني ولا ما فيها وهذا
الـ Iterator اللي موجود مع ResultSet ممكن أنا
هقوله مباشرة أطبع ال values اللي بدنا إياها إيش ال
value اللي بدنا إياها؟ اللي هي ال values اللي
موجودة في كل row يعني الآن هتصير اطباعة لل row رو
على فرض بدي أطبع اسم الطالب بدي أطبع اسم الطالب
والمعدل تبعه بدي أطبع اسم الطالب والمعدلحسب الـ
structure تبع ال database اللي عندي ال attribute
التاني هو ال name والمعدل ال attribute الخامس
هقوله
result set dot get get ايش؟ احنا R مش RS dot get
string ماهي في داخل ال Y أنا شغالة RS
العمودي التاني حصلت عليه لأن هو بمثل إيش ال name
زائد بدي أعمل concatenate المعدل concatenate
r dot جيتي float لأن ال data type اللي أنا عاملها
هناك float وقولنا ال index رقم خمسة الآن بدي أعمل
run yes
هيروح جاب لي ال data اللي موجودين قال لي رامي 80
ثاني 70 هاني 70 سعيد 70 فرحان 80 عباس 65 مونة إلى
آخره كل ال data و جاب لي المعلومات هدا هي الموجودة
عندى تحت من وين جابها عمل connection مع ال
database و جاب ال result set و قال لي هى ال output
تبعتها وقولنا احنا هان ممكن انا اعتمد على اسم ال
column لو انا حافظه او متأكد منهName مش هيتغير
عندي ولا حاجة بس
هان المقطة اللي بحب أؤكد عليها ان ال index بيبدأ
من واحد مع ال result set ال indices بتبدأ من واحد
سواء كانت على مستوى ال raw أو على مستوى ال column
تمام قلنا في الحالة هذه لما كانت اللي هي ال
sequential forward axis ل result set يعني أنا جاعد
بقرأ ال result set فقط باتجاهواحد من البداية
للنهاية لو انا بدى اتنقل ما بين عناصر ال results
او ما بين ال records اللى موجودة عندي قولنا
بيخدمني فيها في الحالة هذه مين اللى هى الخصائص ال
results اللى انا حددتها مع ال statement اللى هى ال
scroll اللى هى ال type scroll وقولنا مع ال type
scroll عشان
اوديك شغل تانى برضه انا هان
مع الـ type scroll او مع الـ default statement
اللي عندي انا لو اجيت لل result set بدي اوبي في ال
while بديش استخدمها الآن وروحت قلتله R dot هاي ال
next موجودة first موجودة
على أول record و last موجودة طيب absoluteموجودة
لكن هل هي active؟ هتتفعل وتنجل عناصر ال records
اللي موجودة عندى؟ لأ طيب بال absolute لو أنا قلتله
خمسة مين الخامس عندهان؟ فرحان absolute خمسة
انجل مؤشر الكتابة لحد خمسة لل record الخامس run
save allدى عامله ايه؟ scrollable؟ scroll
sensitive؟ عاوز
تمام فبالتالي هاي scroll هي absolute طيب relative؟
قولها relative ايش بتساوي؟من الـ current position
وبتبدأ تتنقل إما للأمام أو الخلف بحسب العناصر
لاحظي أنا موجود وين عند خمسة قلتله ناقص اتنين
معناته هيروح على ال record التاني
التاني ولا التالت؟ بده يرجع للخلف خطواتين فهيأشر
على التالت اه على التالت run هاني وهي ال record
التالت
اللي هو هذه تمام الآن فيه ما يتعلق هيقولنا
absolute relative لو بدي أنتقل للجزئية اللي بعد
هيك اللي هي جزئية ال updateable أنا من خلال ال
result set بدي أصير أشتغل و أعدل على ال result set
وخليني أشوف بس نختصف في عملية إدخال record جديد من
خلال ال result set اللي موجود عندي هناحنا قلنا
سابقا اتخيل ان ال result set دي بمثلة query والان
انا بده ادخل لها data جديدة بده ادخل لها data
جديدة قلنا في الخطوة رقم واحد هقول
له ال result set dot move
to insert rowmove to insert row لأن هذا الـ space
هي عبارة عن creation لـ new record في نهاية ال
result set الخطوة الرقم اتنين ببدأ بادخل ال data
لكل record عفوا لكل attribute في ال record الجديد
ال result dot set
set
أيوة أنا قاعد باسألهم اسمها set ال statement لأ
update update update إيش ال data type اللي موجودة
عندها إيش أول attribute داخل أول attribute integer
update integer إيش ال index واحد اللي هو ممثل مين
ال ID إيش ال value وليكن نحطها مثلا سبعة سبعة سبعة
سبعة ثلاث سبعة تمامresult set dot update string
عشان بتدخل ال name إذا أنا مش بتأكد من ترتيبهم
ممكن ألجأ لمين لل attribute names مريم
as a string result
set dotupdate بدي اضافه الـ GBA نوعها float update
float اللي هي ال index او كان ال attribute الخامس
ال value واليكن مثلا تمانية وتمانين فاصلة تسعة
okay
هذه بدي اعملها cast okay لأ لأ بس بدها cast لأنه
بيعتمد by default dot doubleالان بقى عندك توقع
ترميز انا مادخلتهماش ايش هياخدلهم values؟ null
هياخدلهم null اللي هم ال department و ال gender ال
department و ال gender طب في حالة ال gender هي
عبارة عن one character و معرفة character مش ال
string ايش بدي اسوي لها هنا انا؟ كيف بدي اتعامل
معاها؟ مافيش update بالمناسبة الترتيب لا يعني شيء
لأن انت بتتعامل مع كل index بشكل مستقل. الـ name
الـ gender رقم تلاتة update لو دورناها مش هلاجي
character هلاجي string فقط تمشي الحال؟ اه بيمشي
الحال مافيش مشكلة update string اللي هي ال
attribute قولنا التالت و بدى ادخل حرف ال F as a
female كذلكالخطوة الرقم تلاتة أو الخطوة الأخيرة
الآن هقوله result set dot insert row هذا الكلام هو
نفسه كنت بعمله سابقا عند ال update ايش كنت بساوي
أنا واقف على ال record بدون الجملة الأولى اللى فوق
هذه بروح بقوله update integer update string update
float و بديه قيم لجديدة و بروح بقوله result set
dot update row
HUD لأنه احنا عاملينها updatable run تعالى نشوف في
ال database الآن مش موجودة تلات سبعت ف5 مريم email
null 80.9 لأن فعليا انا دخلت الان من ال result set
و ال result set مررتها لمين؟ خدوني بس كشف الحضور
والغيابومررتها لـ Database Management System و
أصبحت أن أنا الآن بقدر أتعامل معاها طيب، لو هذا
الآن ماكنتش .. ماكنتش أعملها updatable، الأصل
ماقدرش أنفذ أو أدخل على الجدول اللي موجود عندي هنا
تلك
ساعات
أيو not updatable result set وبالتالي لو ماكنتش
updatable أصل مش هقدر أتنقل في داخل ال result set
أو أضيف عناصر على ال result set طب لو أنا بدي أعمل
delete لأ record r.delete
row وهذا طبعا بنتكلم جديد على current row اللي
عليه ال pointer تمام
لأ، تقدرش تـ .. شوفي، الآن المفروض الـ result set
هي للقراءة فقط انت الآن بدك تعدي عليها و التعديل
هدف بده ينعكس على ال database لازم تحوليها ل
updatable لازم تحدديها as updatable، كمانأمورنا في
التعامل مع ال database و ادخاله و استخراج البيانات
مافيش فيها مشكلة الآن في الوقت المتبقي نصيا ان شاء
الله بدنا نحاول نعرج على ال graphical user
interface و كيف انا بدي اتعامل مع ال database اللي
موجودة عندي هان طيب الآن ايش بتتوقعي لو كنت انا
بتكلم على form على نموذج طبعا لما اتكلم على form
خليني ناخد class جديد
db2gui طبعا احنا متفقين في ال GUI دايما بيلزمني
frame بيلزمني frame او خليني اروح اجيب ال frame
هذا على السريع
frame وفي الآخر الـ frame هذا عشان يظهر بدي أعمله
set visible مصبوط f.set visible true تمام الآن ال
data تبعتي كيف
بدي أتعامل معاها؟ إذا كنت انت بتتكلمي على نموذج
للإدخال معرفة أنك تقعد تبني عندك لل ID تبني عندك ل
لكل العناصر وحتى تستخدم الـ different items ما بين
text field, combo box, list, button مظهر ولا لأ
لحد ما تشكل النموذج أو ال form بالكامل وأهم في
الموضوع أن المفاتيح اللي تحت اللي هي مثابة ال
insert و ال update و ال delete اللي ممكن تكون
موجودة عندك وهنا ممكن أنا بس نعمل sketch بسيط لل
form هنا
لو انا افترضت النموذج بالشكل هذا هاي ال student او
ال ID وهي field name department
combo
box وفي عندي ال GPA text field وعندي مفاتيح insert
update
delete مش مشكلة بقى خلينا على جدار هيك delete
وممكن انا اعمل browse مفاتيح عشان اقرأ ال data
واتنقل ما بينهم حسب لأ مش بالضرورة كل ال
attributes يكونوا موجودة عندى خصوصا انه بيقبل null
الفكرة وين اللي هتصير هنا ان كل attribute او عفوا
كل graphical component هنقلها اسم مظبوط ولا لأ وفي
عندى method اسمها get value مظبوطget value عشان
أسترجع بالقيمة اللي موجودة بس القيمة اللي موجودة
ده إيش نوع يا بنات؟ hand، string، كل مبهر في ال
GPA برضه string لما بكتبله 88.9، ال string إيش
بلزمني؟ لإن هذا text field، بيلزمني أعملها
parsing، parsing من خلال إيش؟من خلال الـ Wrap
Class أو الـ Rubber Class تبع الـ Primitive Data
بروح بقولله Integer dot parse int و بديله ال
string اللي عندى بيحوّليه ل Integer parse double
بيحوّليها ل double و هكذا ممتاز طبعا انا صرت بدي
اخد ال data من وين؟ من ال text field و اوديها على
ال database على ال database تمام و العكس صحيح بدي
يصير يعني لما انا بدي اكتب ال SQL statement تبعتي
تخيلي هى هى الـ String لإن بدي أجي لاحقا هقوله ال
statement dot execute و ال SQL ال SQL هذه يساوي
بدي أكتبله جملة insert بسيطة insert into students
تمام؟ كل ال attributes كل ال attributes
values وافتح جوس ال attribute الأول مافيش عندى فيه
مشكلة لأن الرقم تمانية سابعة تمانية سابعة كمان
الاسم الاسم لازم يكون ضمن علامات تنصيص ولا لأ
علامات تنصيص هذه علامات تنصيص و بدنا نحط مثلا مون
اتنينالان في عندى مشكلة quotations معناته انا سكة
معناته بدي اعتمدي على ال backslash او ال single
quotation او ال single quotation تمام اللي بعده ال
gender بدي اقوله null اللي بعده ال department هو
ال department ولا ال gender الجابل department اه
okaydepartment number رقمه تلاتين او خمسين مش فارق
كتير وفي الآخر المعدل هي تمانية وتسعة وتسعين خلاص
الان خلصت ال statement تبعتي مية في المية الان هذه
بروح ببررها لميلة ل select a statement و تعمل
دخالة السؤال اللي بيطرح نفسه
8787-2-50-99 من أين يجيبوا المهمة دول؟ مش المفروض
من النموذج من الجدول وبالتالي هدولة بيكون عبارة عن
variables موجودات في ال frame يعني انا فعليا لو
كنت بدي أشغل على واحد فقط منهم او على اتنين بدي
افترض في عندي J Text Field ال
ID SID
New J Text Field يساوي New J Text Field وبدى اخد
الاصطنام كذلك الاصطنام
الاصطنام معناته مكان ال value هذه بتكون اللى فوق
وبما انه انتجر لازم تكون انتجر ايش هروح اساوي انا
هناهل مش هتفرق معايا integer ولا لأ لأن ال system
هيعمل باريسنج فممكن اتعامل معاها as a string و
خلاص اروح اعرف ال string ال ID equal SID.getText
رجعلي بال text و كذلك ال name SID
.getTexttext لو كنت انا معنى لو كنت انا معنى ان
هذي تكون integer عفوا انت بروح هنا مباشرة بقوله
integer dot
parse int و بقوله هاي ال string اللي عندى تمام
و بهيك انا بكون حولت ال string ل integerطبعا طب
وين ال statement بتتعدل هتتعدل هان تتعدل بالشكل
التالي انا بدي القيمة تبعتي ال variable هقمع ال
statement هان و هعمل concatenate و حط ال ID اعمل
concatenate كمان مرة طبعا انها خلصت من .. خلصت من
.. طبعا ماتنسيش ال spaces و كل العاصر الاسم بتكون
موجودة الأن كمة concatenate
هذه الكمة مكان الاسم هذا بدي اخد ال ID اللي هو
اسمه ال name مصبوط بدي اعمل concatenate ال name
وهي كمان مرة concatenate مع ال text اللي موجود
عندها لو انت فكرنا نقبع ال value تبعت هذهبتقبع
insert into students values مفتوح الجوز ال number
الاسم اللي موجود عندي فوق و ال null 59 ال null 59
تسعة وتسعين لما بتحط ايش؟
ايوة مية لمية مية لمية اسم اللي بتسأل سؤال مهم
الآن يا أستاذ ال text اللي انت كتبته في كلمة name
مش هعتبرليها as text ايش الحل؟ لازم ال quotation
تكون موجودة معناته انا بدي quotation هان بحط ال
word slash و حتى و ال double quotation مافيش مشكلة
في الموضوع و نفس الكلام مع بداية مع نهاية هذه هحط
back word slash و ال quotation بتصير ال quotation
جزء من مين؟من الـ String اللي موجود عندي هان طيب
عشان تتأكد بس من الجملة هحاول أقبعلك إياها Sysout
اللي هي ال SQL تبعكناها دي تمام؟ لما أجي أطلعها
هان و أقول في عندك String قيمته موجودة ان الله
احنا بس خلينا عشان هانجيت string جيت integer بدي
اروح احطها واحد اتنين تلاتة اربعة خمسة و اعلج هذه
هيك و انا بدي احط for s بالشكل هذا و هاي بدي اروح
اعمل run لحظي هي طبع ال quotation تحت في المكان
المطلوب مائة في المية و هيك مائة في المية و هيك
انا بكون متأكد ان ال statement تبعت ال syntax
تبعها ان كتب بشكل صحيح كمانهذه خطوة مهمة جدا في
لما انا بدى اتعامل مع النماذج لو كان العكس معادي
هعمل fetch زي ما كنت انا بشتغل hand مع ال database
هعمل fetch و بدل ما كنت اطبعها مباشرة و اين بده
احطها؟ بده احطها في ال field اللي موجود على ال
form في ال field اللي موجود على ال form طيب و هيك
بصير خلصنا مع العند ال insert بستدعي ال action
listenerبعمل form لـ statement و بقوله execute لـ
statement اللي عندي العنصر الجيد اللي هنضيف اليوم
للـ graphical user interface اللي هو الـ table في
عندي شغلة اسمها Jtable العناصر
هذه بدها تنضيف لل form okay احنا فهمنا الكلام
مافيش مشكلة ممكن نعمله comment Jtable
.tnewjtable و الـ table بياخد واحد من تلاتة .. من
three constructors او اربع .. ال default
constructor بالاضافة واحد من تلاتة عفوا ان ممكن
انا اديله ال data بشكل مباشر عشان يعرضليها و لما
انا بدي اعرضه ال data لازم ال data تكون عبارة عن
ال race و بياخد مني ال dataبالشكل هذا و ال column
بالشكل هذا ايش بتفهم الكلام اللي انا كتبته ان ال
data لازم تكون عبارة عن two dimensional array و ال
columns لازم تكون one dimensional ايش المقصود بال
columns الى الأسماء ال attributes أسماء ال
attributes R عشان هيك ال result set ممكن تخدمني
انا ال result set في آخر slide
أحنا في عنا شغلة اسمها metadata اللي هي بيانات
وصفية عن ال result set مش عن الجدول عن جزء من
الجدول اللي هو جاي في ال result set لأن ال select
statement ممكن تكون one attribute ممكن two
attributes، مظبوط؟ لكن إذا أنا قلت له select star
from students و بدون where معناته أنا بتكلم عن
الجدول بالكامل وأهم في وصف الجدول وصف الأعمدة،
عددهم؟وترتيبهم وأسماءهم وال data type تبعتهمطيب و
هذا الكلام كله موجود من خلال ال result set في عندى
object او class اسمه database metadata اتكلم على
ال database بشكل عام انا مابديش اتكلم على ال
database metadata بدي اتكلم على ال result set
metadata في المرحلة هذه بتلزمني لو كنت بدى اعرش
فيها جداول من ال users اللي لهم صلاحيات واش
الصلاحيات شغل تاني مابيعنينيش كتير لكن انا اللي
بيعنيني الآن او في مستوان المرحلة هذه result set
metadataكيف أحصل عليها؟ انا حصلت على result set من
execute query بروح بعرف result set metadata و بحصل
عليها من result set.get metadata يعني ال method
get metadata بترجع ب object من نوع result set
metadata من أهم ال methods اللي موجودة فيها get
column count عدد ال attributesGetColumnName بناءً
على الـ Index Got Get عفوا ColumnClassName المقصود
بال class name اللي هي ال data type تبعته بناءً
على ال index اللي موجود و بالتالي بحصل على بيانات
متكاملة عن الجدول اللي موجود عندها تمام خلينا نروح
نكمل الشغل العملي مع الجدول الآن عرفت الجدول كيف
ال data ممكن تدخل بشكل بسيط و بسيط جدا انا بضرح
اعرف ال stringأو array of string titles الـ column
titles اللي مقصود فيها و بدأت أثبتهم أثبتهم ال ID
على سبيل المثال name في أسهل من هيك؟ البنات خليكم
معايا هان ال .. قولنا ال gender okay خلينا بس على
أربع ما تبديش يوم كلهم ال department
و في الآخر الـ GBA الآن هذه مين؟ هذه أسماء ال
columns ال data ممكن أنا أعرفها من نوع object إذا
أنا بدأ أحط different data في داخل ال data والأصل
فيكي الآن ال array لما تنشئيهابتكون عبارة عن كل
element في ال array هذه عبارة عن array وبحسب
العناصر الموجودة عندها مثلا، واحد أو مية طالب أحمد
department
software development و ال GPA مثلا 88.4 هذا الصف
الأول
صف التاني كمان ال Ray مية و واحد مرام
او مية و اتنين عفوا مش خاضي بغض النظر اشتت في ال
computer science as a text وهي
مثلا سبعة و تمانين عفواالان ال data موجودة و ال
titles موجودات فبروح بقوله للجدول ال constructor
تبع ال data و ال titles وضل
اضيف ال table على ال frame اللي عندي dot table dot
add T
proceed اشيالنا خطأ هان okay
بس ql run
هاي الجدول الموجود لكن ال header مش باين لأنه عشان
بس اضافته على ال frame بشكل مباشر خليني اروح اعرف
scroll pan و اضيفه على scroll pan دي
scroll panو بدي أضيف ال table و بدي أضيف ال scroll
pan على العنصر
اللي قبل هاي ظهر الجدول الآن في خاصية ضريفة مع
الجدول هانو كويسة ممكن نستفيد منها اللي هي مع ال
table T auto create auto sort او auto sorter T dot
setAutocreateRawSorter إيش الـ method هاي بتساوي؟
بتخليكي لما تشغّل ال table تقدر تعملي sort لل data
بشكل مباشر هاي true run هاي الجدول اللي صار موجود
okay ليش؟
صح
True Sorter بعمل
Sort بس على مبدوه كان الماوس متعلق او ما مش شابه
ها الان لاحظي بقدر انا ارتب ترتيب تساعد او تنازل و
مجرد كليك بناء على الجملة اللي موجودة عندها طيب لو
انا بدأ ادخل ال database او بدحش ال database الآن
في الموضوع ايش اللي بتحيط غير عندي؟أيش اللي هيتغير
عندي على السريع ال titles ممكن أجيبها بناءً على ال
result set تمام التانية ال data تبعتي ال data ..
اه لأ مهمش على السريع و هنأخر أخونا أبو حمز كمان
دقتين الآن في ال table في عندي constructor آخر
بيعتمد على شغل اسمها table أو default table model
default
Table Model Default
Table Model M Default
Table Model ممكن تاخد مني أسماء الـ Attributes
اللي هي عندي مثلة ال titles الآن، مصبوط؟ وعدد ال
rows أنا بدأ أقوله الآن ال rows خليليها صفروالجدول
هذا بدي انشئه على ال model هذا أو على النمط القديم
لأ بدي انشئه باعتماده على ال model object تمام هي
الأمر الآن ال model object ال model object بقدر
انا اعمل update على ال data تبعته في أي وقتمن خلال
method اسمها .addraw() والـ addraw هذي بتاخد مني
object بتاخد مني array من نوع object فإيش اللي
هيتغير عندي في ال application تبعي في جملة ال
where هذي while a next هاي هعمل المثال هذا بكل
بساطة في
داخل ال why هعرف ال statement تبعتيطبعا عملت
connection و عرفت result 6 و ال statement إلى آخره
عرفت object و جبت عدد ال attributes من خلال ال
result 6 اللي عندي و روحت قلتله ابني عناصر بالشكل
هذا او بكل بساطة انا بقول بدي اربع attributes اربع
attributes مافي مشكلة عندنا الان هاي الاربع
attributes لاحظة خدت ال integer و حطيته في ال
channel أولى في ال array الآن array ايش نوعها
object يعني ال generic مقدر احط فيها اي دتطيب انا
بديهاوبعد ما بخلص بروح بقوله اضيف لل raw هذا على
ال model اللي عندى الجدول اللى حيصير عندنا الآن
ايران جاب
ال data من ال database اللى موجود عندى و بقدر ارتب
ال data حسب ال GPA حسب ال gender ال department
okay انا فيه فرق في الترتيب مش مشكلة وبالتاليأو
قدرت ادمج ما بين ال database و graphical user
interface سواء كان في الجدول او لا اخر شغلة فيما
يتعلق بالجدول اذا انت لو بدك تعملي update من خلال
الجدول جرافيكال user interface هذا معناته عليه
listener في عندك على ال model الخاص بال table بقدر
اقول له add table model listenerإذا انت بتتعامل بس
مع ال data اللي في ال module في عندك add table
model listener و من داخله بتشتغل زي ال listener
السابقات تصير مع ال click أو حسب ال data تغيير ال
data تقدر تاخدي ال action المناسبوبهيك بنكون
امتحانة من موضوع ال database و رابطها مع ال
graphical user interface و ان شاء الله بنكون
اقدرنا نجمللكوا كيف ممكن عملية الربط تم و تصير
برنامجك متكامل في اي سؤال يا بنات؟ هو اخر اشي يا
دكتور انه لما عملت انه ال table model نعم انه من
خلالها لو زي بالظبط ال result set كنا نعمل من
خلالها لما ال concurrency نعمل update بقدرأيوة،
بالضبط، بيصير من خلال الـ Results لكن أنا بيتعامل
مع Graphical User Interface موجود عندي هنا لما أنا
بدي أعمل Click أو بدي أغير في الـ Data اللي موجودة
هنا يعني أنا اضغط، اضغطين هنا وبدي أروح أكتب، إيش
الـ Data اللي بيصير فيها لما أضغط Enter؟ مش يصار
في Event؟ مين بدي يمسك لي الـ Event هذا؟ إذا أنا
باني على Modeldefault table model معناته بقدر
أتعامل مع الـ default أو ال model table listener
ومن ثم بقدر أتعامل معاه مع ال action بالوضع
الطلقائي الهدف هنا أنه أنجل ال data من ال table
على الجدول لإن هي أصلا طلعت من ال result set وصارت
وين موجودة؟ على ال form على النموذج أو على ال
table اي
فيهم
الـ Auto، هيا، Okay، هذا Set Auto Create Raw
Sorter، ماله؟ إيش يعني؟ الآن Auto يعني تلقائي، أنا
بدي أخلي عملية الترتيب للجدول عملية الترتيب
تلقائية، بمجرد أعمل Click، ينعاد ترتيب الصفوف في
الجدول من خلاله، هيا، لما احنا شغلنا الـ Table،
Okay، احنا شكلنا هان، Okayهذه هي الترتيب مرتب
ترتيب تصاعد حسب ال ID هاي click انعادش الترتيب هذه
الآن مش هتتفعل إلا لو قلت انت ال table هذا بدي
أخلي ترتيب الصفوف يصير في ترتيب تلقائي باشي الحال
الله يعطيكوا العفو يا بنات وان شاء الله بحملكوا ال
code هذا برضه على ال website الله يعطيكوا العفو