SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
‫الرحيم‬ ‫الرحمن‬ ‫هللا‬ ‫بسم‬
‫سوف‬ ‫الدرس‬ ‫اليوم‬‫التعامل‬ ‫يكون‬‫البيانات‬ ‫قواعد‬ ‫مع‬‫بالـ‬JDBC
‫هو‬ ‫الدرس‬ ‫بهذا‬ ‫سنأخذه‬ ‫ما‬:
‫البيانات‬ ‫قواعد‬ ‫هي‬ ‫ما‬
‫هي‬ ‫ما‬JDBC
‫أجل‬ ‫من‬ ‫األساسية‬ ‫السبع‬ ‫الخطوات‬‫الوصول‬‫إلى‬‫البيانات‬ ‫قواعد‬
‫مع‬ ‫اتصال‬ ‫مثال‬‫قاعدة‬MySQL
‫التدريب‬ ‫أجل‬ ‫من‬ ‫الواجبات‬ ‫بعض‬
‫ه‬ ‫ما‬‫البيانات‬ ‫قواعد‬ ‫ي‬
‫هي‬‫مجموعة‬‫من‬‫عناصر‬‫البيانات‬‫المنطقية‬‫المرتبطة‬‫مع‬‫بعضها‬‫البعض‬‫بعالقة‬‫وتتكون‬ ،‫رياضية‬‫قاعدة‬‫البيانات‬
‫من‬‫جدول‬(Table)‫واحد‬‫أو‬‫أكثر‬‫من‬‫ويتكون‬ ‫جدول‬‫الجدول‬‫من‬‫سجل‬(Record)‫أو‬‫أكثر‬‫من‬‫سجل‬‫ويتكون‬
‫السجل‬‫من‬‫حقل‬(Field)‫أو‬‫أكثر‬‫من‬‫حقل‬.
‫تعريف‬ ‫ليس‬ ‫هذا‬‫البيانات‬ ‫قواعد‬ ‫عن‬ ‫درس‬ ‫وليس‬ ‫بالجافا‬ ‫البيانات‬ ‫قواعد‬ ‫مع‬ ‫التعامل‬ ‫الدرس‬ ‫هذا‬ ‫ألن‬ ‫البيانات‬ ‫لقواعد‬ ‫شامل‬
‫هي‬ ‫ما‬JDBC
‫كلمة‬JDBC‫لـ‬ ‫اختصار‬ ‫هي‬Java DataBase Connectivity‫طريق‬ ‫عن‬ ‫البيانات‬ ‫بقواعد‬ ‫االتصال‬ ‫تعني‬ ‫وهي‬
‫الجافة‬‫مجموع‬ ‫مع‬ ‫للتعامل‬ ‫مكتبة‬ ‫لك‬ ‫تؤمن‬ ‫واجها‬ ‫عن‬ ‫عبارة‬ ‫هي‬‫ة‬‫واسعة‬‫البيانات‬ ‫قواعد‬ ‫من‬‫لك‬ ‫يؤمن‬ ‫كما‬
‫بلغة‬ ‫البيانات‬ ‫قواعد‬ ‫مع‬ ‫التخاطب‬ ‫أجل‬ ‫من‬ ‫مستوى‬SQL.
‫الدريفرات‬ ‫معرفة‬ ‫أجل‬ ‫من‬ ‫رابط‬ ‫هذا‬(‫بر‬‫ن‬‫المعطيات‬ ‫لقواعد‬ ‫الوصول‬ ‫امج‬)‫في‬ ‫المتاحة‬JDBC
un.com/products/jdbc/drivershttp://industry.java.s
http://developers.sun.com/product/jdbc/drivers
‫البيانات‬ ‫لقواعد‬ ‫الوصول‬ ‫أجل‬ ‫من‬ ‫السبع‬ ‫الخطوات‬
‫وت‬ ‫والحشر‬ ‫وجلب‬ ‫البيانات‬ ‫قواعد‬ ‫إلى‬ ‫الوصول‬ ‫أجل‬ ‫من‬ ‫الضرورية‬ ‫الخطوات‬ ‫هذا‬‫عديل‬.
1.‫الـ‬ ‫درايفر‬ ‫تحميل‬JDBC:‫من‬ ‫البيانات‬ ‫قاعدة‬ ‫درايفر‬ ‫من‬ ‫الصف‬ ‫اسم‬ ‫تحديد‬ ‫عليك‬ ‫الدريفر‬ ‫لتحميل‬
‫الطريقة‬Class.forName،‫بذالك‬‫لـ‬ ‫الدريفر‬ ‫إدارة‬ ‫في‬ ‫وتسجل‬ ‫لدرايفر‬ ‫حالة‬ ً‫ا‬‫تلقائي‬ ‫تنشأ‬JDBC.
2.‫االتصال‬ ‫رابط‬ ‫تحديد‬:‫الـ‬ ‫في‬JDBC‫المضيف‬ ‫تحديد‬ ‫عليك‬ ‫بالسيرفر‬ ‫االتصال‬ ‫لربط‬(host)‫والمنفذ‬
(port)‫البيانات‬ ‫قاعدة‬ ‫واسم‬.
3.‫االتصال‬ ‫تأسيس‬:‫المستخد‬ ‫اسم‬ ‫هناك‬ ‫االتصال‬ ‫رابط‬ ‫مع‬‫م‬‫بقاعدة‬ ‫االتصال‬ ‫تأسيس‬ ‫أجل‬ ‫من‬ ‫المرور‬ ‫وكلمة‬
‫البيانات‬.‫االتصال‬ ‫قاعدة‬ ‫إغالق‬ ‫حتى‬ ‫البيانات‬ ‫لقاعدة‬ ‫استعالم‬ ‫تنفيذ‬ ‫يمكنك‬ ‫االتصال‬ ‫تأسيس‬ ‫وبمجرد‬.
4.‫الغرض‬ ‫أنشاء‬Statement:‫أنشاء‬ ‫إن‬‫غرض‬‫نمط‬ ‫من‬Statement‫وأوامر‬ ‫استعالم‬ ‫إرسال‬ ‫لك‬ ‫يتيح‬
‫إلى‬‫البيانات‬ ‫قاعدة‬.
5.‫التحديث‬ ‫أو‬ ‫االستعالم‬ ‫تنفيذ‬:‫نمط‬ ‫من‬ ‫غرض‬ ‫على‬ ‫حصولك‬ ‫عند‬Statement‫إرسال‬ ‫يمكنك‬ ‫فإنه‬
‫عبارات‬SQL‫الطرق‬ ‫بتنفيذ‬ ‫ذالك‬ ‫البيانات‬ ‫قاعدة‬ ‫إلى‬executeQuery‫أو‬executeUpdate‫أو‬
executeBatch.
6.‫النتائج‬ ‫معالجة‬:‫نمط‬ ‫من‬ ‫غرض‬ ‫إرجاع‬ ‫يتم‬ ‫فإنه‬ ‫البيانات‬ ‫قاعدة‬ ‫استعالم‬ ‫تنفيذ‬ ‫عند‬ResultSet‫هذا‬
‫ال‬ ‫من‬ ‫مجموعة‬ ‫يمثل‬ ‫الغرض‬‫صفوف‬‫الطريقة‬ ‫باستدعاء‬ ‫معالجتها‬ ‫يمكنك‬ ‫الذي‬ ‫واألعمدة‬next‫و‬
‫لـ‬ ‫المختلفة‬ ‫الطرق‬getXxx‫حيث‬Xxx‫من‬ ‫الحقل‬ ‫من‬ ‫تريده‬ ‫الذي‬ ‫نمط‬ ‫هي‬etc,.., String, flout ,
int.
7.‫ا‬ ‫إغالق‬‫التصال‬:‫إغالق‬ ‫عليك‬ ‫ينبغي‬ ‫عندها‬ ‫النتائج‬ ‫ومعالجات‬ ‫االستعالم‬ ‫عمليات‬ ‫من‬ ‫تنتهي‬ ‫عنما‬
‫االتصال‬.
‫بالتفصيل‬ ‫وشرحها‬ ‫خطوة‬ ‫كل‬ ‫إلى‬ ‫نأتي‬ ‫سوف‬ ‫اآلن‬
‫الـ‬ ‫درايفر‬ ‫تحميل‬JDBC
‫البيانات‬ ‫قاعدة‬ ‫خادم‬ ‫مع‬ ‫التخاطب‬ ‫يمكنها‬ ‫التي‬ ‫برمجيات‬ ‫من‬ ‫جزء‬ ‫عن‬ ‫عبارة‬ ‫هو‬ ‫الدريفر‬‫الحقيقية‬.‫لتحميل‬
‫الدريفر‬‫إدارة‬ ‫في‬ ‫بتسجيلك‬ ‫وتقوم‬ ‫الدرايفر‬ ‫من‬ ‫حالة‬ ‫لك‬ ‫تنشأ‬ ً‫ا‬‫تلقائي‬ ‫وهي‬ ‫المناسب‬ ‫الصف‬ ‫اختيار‬ ‫عليك‬ ‫فقط‬
‫ال‬‫لـ‬ ‫دريفر‬JDBC.
‫الطريقة‬ ‫استخدام‬ ‫عليك‬ ‫الدريفر‬ ‫تحميل‬ ‫اجل‬ ‫من‬Class.forName‫نمط‬ ‫من‬ ‫وسيط‬ ‫الطريقة‬ ‫هذه‬ ‫وتأخذ‬String
‫الصف‬ ‫اسم‬ ‫يمثل‬ ‫وهو‬(classname)‫ا‬ ‫يلقي‬ ‫سوف‬ ‫االستدعاء‬ ‫هذا‬‫الشكل‬ ‫من‬ ‫ستثناء‬ClassNotFoundException
‫داخل‬ ‫الدريفر‬ ‫تحميل‬ ‫يكون‬ ‫أن‬ ‫يجب‬ ‫لذالك‬try/catch‫يلي‬ ‫كما‬ ‫يعني‬:
try {
Class.forName("connect.microsoft.MicrosoftDriver");
Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName("com.sybase.jdbc.SybDriver");
} catch(ClassNotFoundException cnfe) {
System.err.println("Error loading driver: " + cnfe);
}
‫الطريقة‬ ‫في‬ ‫صف‬ ‫مسار‬ ‫أي‬ ‫استخدام‬ ‫يمكنك‬ ‫فإنه‬ ‫المبدأ‬ ‫حيث‬ ‫من‬Class.forName‫في‬ ‫ولكن‬‫الممارسة‬‫العملي‬‫ة‬
‫الدرايفرات‬ ‫معظم‬ ‫فإن‬JDBC‫ملفات‬ ‫داخل‬ ‫تكون‬JAR،‫بتض‬ ‫قمت‬ ‫أنك‬ ‫من‬ ‫تأكد‬ ‫لذالك‬‫ما‬ ‫حسب‬ ‫الصف‬ ‫مسار‬ ‫مين‬
‫ملف‬ ‫في‬ ‫موجود‬ ‫هو‬JAR‫الدليل‬ ‫في‬ ‫الملف‬ ‫بوضع‬ ‫وقم‬WEB-INF/lib‫بك‬ ‫الخاص‬ ‫الويب‬ ‫تطبيق‬ ‫في‬.
‫ملف‬ ‫بوضع‬ ‫قم‬ ‫فهنا‬ ‫معينة‬ ‫البيانات‬ ‫لقاعدة‬ ‫درايفر‬ ‫نفس‬ ‫يستخدم‬ ‫تطبيق‬ ‫من‬ ‫أكثر‬ ‫هناك‬ ‫كان‬ ‫حال‬ ‫في‬JAR‫في‬‫دليل‬
‫لملفات‬ ‫مكان‬ ‫له‬ ‫سيرفر‬ ‫كل‬ ‫في‬ ‫السيرفر‬ ‫قبل‬ ‫من‬ ‫مشترك‬JAR.
‫االتصال‬ ‫رابط‬ ‫تحديد‬
‫من‬ ‫االنتهاء‬ ‫وبمجرد‬‫الـ‬ ‫درايفر‬ ‫تحميل‬JDBC‫عليك‬ ‫ينبغي‬ ‫فإنه‬ ،‫موقع‬ ‫تحديد‬‫البيانات‬ ‫قاعدة‬ ‫خادم‬.‫لروابط‬ ‫اإلشارة‬ ‫عليك‬
‫الـ‬ ‫البيانات‬ ‫قواعد‬ ‫استخدام‬JDBC‫ما‬ ‫إلى‬‫يلي‬:‫الموقع‬ ‫المضيف‬ ‫تضمين‬ ‫عليك‬ ‫البروتوكول‬(host)‫واسم‬ ‫والمنفذ‬
‫إش‬ ‫يجب‬ ‫كله‬ ‫هذا‬ ‫البيانات‬ ‫قاعدة‬‫ذالك‬ ‫على‬ ‫مثال‬ ‫هذا‬ ‫الرابط‬ ‫في‬ ‫ارته‬.
String host = "dbhost.yourcompany.com";
String dbName = "someName";
int port = 1234;
String oracleURL = "jdbc:oracle:thin:@" + host +
":" + port + ":" + dbName;
String sybaseURL = "jdbc:sybase:Tds:" + host +
":" + port + ":" + "?SERVICENAME=" + dbName;
‫االتصال‬ ‫تأسيس‬
‫تمرير‬ ‫عليك‬ ‫فعال‬ ‫االتصال‬ ‫لجعل‬‫وهي‬ ‫الوسطاء‬‫الرابط‬‫االتصال‬(URL)‫وكلمة‬ ‫البيانات‬ ‫لقاعدة‬ ‫المستخدم‬ ‫واسم‬
‫لطريقة‬ ‫البيانات‬ ‫لقاعدة‬ ‫المرور‬getConnection‫الصف‬ ‫من‬ ‫هي‬ ‫التي‬DriverManager.
‫لتوضيح‬ ‫مثال‬ ‫هذا‬
String username = "jay_debesee";
String password = "secret";
Connection connection =
DriverManager.getConnection(oracleURL, username, password);
‫الطريقة‬ ‫أن‬ ‫نالحظ‬getConnection‫نمط‬ ‫من‬ ‫غرض‬ ‫لنا‬ ‫تعيد‬Connection.
‫الصف‬ ‫أن‬Connection‫إليها‬ ‫نتعرف‬ ‫دعونا‬ ‫مفيدة‬ ‫طرق‬ ‫على‬ ‫يحوي‬
prepareStatement:‫البيانات‬ ‫لقاعدة‬ ‫لتقدمها‬ ‫الترجمة‬ ‫قبل‬ ‫استعالم‬ ‫تخلق‬ ‫الطريقة‬ ‫بهذه‬
prepareCall:‫البيانات‬ ‫قاعدة‬ ‫في‬ ‫مخزنة‬ ‫إجراءات‬ ‫إلى‬ ‫يصل‬
rollback/commit:‫العمليات‬ ‫إدارة‬ ‫في‬ ‫يتحكم‬
close:‫البيانات‬ ‫بقاعدة‬ ‫االتصال‬ ‫يغلق‬
isClosed:‫صريح‬ ‫بشكل‬ ‫مغلق‬ ‫أو‬ ‫مهمل‬ ‫االتصال‬ ‫كان‬ ‫إذا‬ ‫التحقق‬ ‫يتم‬.
‫أيض‬ ‫هناك‬‫فاستخدم‬ ‫البيانات‬ ‫قاعدة‬ ‫عن‬ ‫المعلومات‬ ‫بعض‬ ‫تريد‬ ‫كنت‬ ‫إذا‬ ‫وهو‬ ‫البيانات‬ ‫قاعدة‬ ‫تأسيس‬ ‫في‬ ‫جزء‬ ً‫ا‬
‫الطريقة‬getMetaData‫نمط‬ ‫من‬ ‫غرض‬ ‫لك‬ ‫تعيد‬ ‫الطريقة‬ ‫هذا‬DatabaseMetaData‫تكشف‬ ‫الطريقة‬ ‫هذا‬
‫هي‬ ‫والطرق‬ ‫البيانات‬ ‫قاعدة‬ ‫وإصدار‬ ‫اسم‬ ‫لك‬getDatabaseProductName, getDatabaseProductVersion))
‫الـ‬ ‫درايفر‬ ‫أو‬JDBC‫الطرق‬ ‫هي‬ ‫وهذه‬(getDriverName, getDriverVersion)‫ذالك‬ ‫على‬ ‫مثال‬ ‫وهذا‬:
DatabaseMetaData dbMetaData = connection.getMetaData();
String productName = dbMetaData.getDatabaseProductName();
System.out.println("Database: " + productName);
String productVersion =dbMetaData.getDatabaseProductVersion();
System.out.println("Version: " + productVersion);
‫الغرض‬ ‫أنشاء‬Statement
‫نمط‬ ‫من‬ ‫الغرض‬Statement‫الغرض‬ ‫أنشاء‬ ‫ويتم‬ ‫البيانات‬ ‫لقاعدة‬ ‫وأوامر‬ ‫استعالمات‬ ‫إرسال‬ ‫أجل‬ ‫من‬ ‫يستخدم‬
‫نمط‬ ‫من‬ ‫غرض‬ ‫من‬Connection‫هي‬ ‫الطريقة‬ ‫باستخدام‬createStatement‫كتالي‬ ‫األمر‬ ‫ويكون‬:
Statement statement = connection.createStatement();
‫التحديث‬ ‫أو‬ ‫االستعالم‬ ‫تنفيذ‬
‫نمط‬ ‫من‬ ‫الغرض‬ ‫على‬ ‫حصولك‬ ‫بمجرد‬Statement‫استعالم‬ ‫إلرسال‬ ‫استعماله‬ ‫يمكنك‬ ‫فإنه‬SQL‫ذالك‬
‫الطريقة‬ ‫باستخدامك‬executeQuery‫ال‬‫نمط‬ ‫من‬ ‫غرض‬ ‫لك‬ ‫ترجع‬ ‫تي‬ResultSet‫ذالك‬ ‫على‬ ‫مثال‬ ‫هذا‬.
String query = "SELECT col1, col2, col3 FROM sometable";
ResultSet resultSet = statement.executeQuery(query);
‫تس‬ ‫التي‬ ‫الطرق‬ ‫تلخص‬ ‫التالية‬ ‫القائمة‬‫ت‬‫الصف‬ ‫في‬ ً‫ة‬‫عاد‬ ‫خدم‬Statement:
executeQuery:‫تقوم‬ ‫الطريقة‬ ‫بهذه‬‫استعالم‬ ‫بتنفيذ‬SQL‫نمط‬ ‫من‬ ‫غرض‬ ‫في‬ ‫البيانات‬ ‫وترجع‬
ResultSet‫نمط‬ ‫من‬ ‫والغرض‬ResultSet‫يكون‬ ‫أن‬ ‫الممكن‬ ‫من‬ ‫ليس‬ ‫لكن‬ ‫فارغ‬ ‫يكون‬ ‫أي‬ ‫ممكن‬null.
executeUpdate:‫الـ‬ ‫أوامر‬ ‫أجل‬ ‫من‬ ‫فقط‬ ‫الطريقة‬ ‫هذه‬ ‫تستخدم‬SQL‫هي‬ ‫التي‬UPDATE‫أو‬INSERT
‫أو‬DELETE‫ال‬ ‫عدد‬ ‫الطريقة‬ ‫هذه‬ ‫لنا‬ ‫وتعد‬‫صفوف‬‫باألمر‬ ‫تأثرت‬ ‫التي‬.‫لغة‬ ‫أوامر‬ ً‫ا‬‫أيض‬ ‫تدعم‬ ‫إنها‬ ‫كما‬
‫البيانات‬ ‫تعريف‬(DDL)‫هي‬ ‫منها‬ ‫التي‬CREATE TABLE‫و‬DROP TABLE‫و‬ALTER TABLE.
executeBatch:‫بقوم‬‫بتنفيذ‬‫أوامر‬ ‫مجموعة‬‫واحدة‬ ‫دفعة‬‫ل‬ ‫ويعيد‬‫مصفوفة‬ ‫نا‬‫عدد‬ ‫يساوي‬ ‫عنصر‬ ‫كل‬
‫أمر‬ ‫لكل‬ ‫التعديالت‬.‫للمج‬ ‫أمر‬ ‫إلضافة‬‫م‬‫استخدم‬ ‫وعة‬addBatch.
setQueryTimeout:‫النتيجة‬ ‫على‬ ‫للحصول‬ ‫للدرايفر‬ ‫الالزم‬ ‫الوقت‬ ‫مقدار‬ ‫تحدد‬ ‫أنت‬ ‫الطريقة‬ ‫بهذه‬
‫نوع‬ ‫من‬ ‫استثناء‬ ‫الطريقة‬ ‫هذه‬ ‫وترمي‬SQLException.
getMaxRows/setMaxRows:‫الصفوف‬ ‫عدد‬ ‫تحديد‬ ‫تستطيع‬ ‫الطرق‬ ‫بهذه‬‫الذي‬‫الـ‬ ‫يحتويه‬ ‫قد‬
ResultSet.
‫النتائج‬ ‫معالجة‬
‫الطريقة‬ ‫باستخدام‬ ‫هي‬ ‫النتائج‬ ‫مع‬ ‫للتعامل‬ ‫طريقة‬ ‫أبسط‬next‫الصف‬ ‫من‬ResultSet‫وهي‬‫أجل‬ ‫من‬‫االنتقال‬
‫مرة‬ ‫كل‬ ‫في‬ ‫البيانات‬ ‫جدول‬ ‫في‬ ‫واحد‬ ‫صف‬‫ا‬ ‫بها‬ ‫يتم‬ ‫التي‬‫الطريقة‬ ‫ستدعاء‬next.
‫الصف‬ ‫في‬ResultSet‫عن‬ ‫ذالك‬ ‫العامود‬ ‫في‬ ‫الموجودة‬ ‫البيانات‬ ‫الحصول‬ ‫أجل‬ ‫من‬ ‫مختلفة‬ ‫طرقة‬ ‫هناك‬ ‫يوجد‬
‫هي‬ ‫والطرق‬ ‫العامود‬ ‫دليل‬ ‫أو‬ ‫العامود‬ ‫اسم‬ ‫طريق‬getXxx‫حيث‬Xxx‫الجافة‬ ‫في‬ ‫البيانات‬ ‫نوع‬ ‫هي‬‫المقابل‬‫في‬ ‫لها‬
‫ا‬ ‫استخدام‬ ‫يتم‬ ‫المثال‬ ‫سبيل‬ ‫فعلى‬ ‫البيانات‬ ‫قواعد‬‫لطريقة‬getInt‫من‬ ‫صحيحة‬ ‫عدد‬ ‫قيمة‬ ‫على‬ ‫الحصول‬ ‫أجل‬ ‫من‬
‫الطريقة‬ ‫استخدام‬ ‫ويتم‬ ‫الحقل‬getString‫شكل‬ ‫على‬ ‫الحقل‬ ‫قيمة‬ ‫على‬ ‫الحصول‬ ‫اجل‬ ‫من‬String‫هناك‬ ً‫ا‬‫طبع‬
‫لـ‬ ‫الطرق‬ ‫من‬ ‫كثير‬get‫الصف‬ ‫في‬ResultSet.‫الطريقة‬getXxx‫نوع‬ ‫من‬ ‫استثناء‬ ‫ترمي‬SQLException.
‫مالحظة‬:‫الـ‬ ‫في‬ ‫األول‬ ‫العامود‬ ‫دليل‬ResultSet‫هو‬1‫وليس‬0.
‫لطباعة‬ ‫مثال‬ ‫نعرض‬ ‫اآلن‬‫قيم‬‫والث‬ ‫األول‬ ‫العامود‬‫كل‬ ‫أجل‬ ‫من‬ ‫العامود‬ ‫والدليل‬ ‫العامود‬ ‫اسم‬ ‫طريق‬ ‫عن‬ ‫اني‬
‫الـ‬ ‫في‬ ‫الصفوف‬ResultSet:
while(resultSet.next()) {
System.out.println(resultSet.getString(1) + " " +
resultSet.getString(2) + " " +
resultSet.getString("firstname") + " "
resultSet.getString("lastname"));
}
‫األفضل‬ ‫من‬‫تم‬ ‫إذا‬ ‫األعمدة‬ ‫تغير‬ ‫الممكن‬ ‫من‬ ‫ألنه‬ ‫الدليل‬ ‫من‬ ‫بدل‬ ‫العامود‬ ‫لقيمة‬ ‫للوصول‬ ‫األعمدة‬ ‫اسم‬ ‫استخدام‬
‫البيانات‬ ‫قاعدة‬ ‫في‬ ‫الجدول‬ ‫هيكلة‬ ‫تغير‬.
‫في‬JDBC 1.0‫تغ‬‫الـ‬ ‫في‬ ‫لإلمام‬ ‫التحرك‬ ‫فقط‬ ‫يمكنك‬ ‫فإنه‬ ‫ير‬ResultSet‫أنه‬ ‫حين‬ ‫في‬‫في‬JDBC 2.0‫فإنه‬
‫الطريقة‬ ‫بوساطة‬ ‫لإلمام‬ ‫االنتقال‬ ‫يمكنك‬next‫الطريقة‬ ‫بوسط‬ ‫الوراء‬ ‫إلى‬ ‫خطوة‬ ‫والعودة‬previous‫الـ‬ ‫في‬
ResultSet‫الطريقتان‬ ‫بواسطة‬ ‫البيانات‬ ‫قاعدة‬ ‫جدول‬ ‫في‬ ‫معين‬ ‫صف‬ ‫إلى‬ ‫االنتقال‬ ‫ويمكنك‬relative‫و‬
absolute.
‫في‬ ‫ليس‬ ‫أنه‬ ‫تعلم‬ ‫أن‬ ‫عليك‬JDBC 1.0‫حتى‬ ‫وال‬JDBC 2.0‫الـ‬ ‫الدرايفر‬ ‫إصدار‬ ‫لتحديد‬ ‫مباشرة‬ ‫آلية‬ ‫يوجد‬JDBC
‫الـ‬ ‫في‬ ‫أما‬JDBC 3.0‫ف‬‫المشكلة‬ ‫هذه‬ ‫حل‬ ‫تم‬ ‫قد‬‫الطريقتان‬ ‫بإضافة‬ ‫وذالك‬getJDBCMajorVersion‫و‬
getJDBCMinorVersion‫الصف‬ ‫إلى‬DatabaseMetaData.
‫قائ‬ ‫هذه‬‫الصف‬ ‫في‬ ‫المفيدة‬ ‫لطرق‬ ‫ملخص‬ ‫هي‬ ‫مة‬ResultSet:
next/previous:‫الطريقة‬next‫في‬ ‫مؤشر‬ ‫تحريك‬ ‫على‬ ‫تقوم‬ResultSet‫األمام‬ ‫إلى‬ ‫واحد‬ ‫صف‬
‫الـ‬ ‫في‬ ‫اصدارات‬ ‫كل‬ ‫في‬ ‫موجودة‬ ‫الطريقة‬ ‫وهذه‬JDBC.‫الطريقة‬ ‫أما‬previous‫على‬ ‫تقوم‬ ‫فهي‬
‫في‬ ‫المؤشر‬ ‫تحريك‬ResultSet‫الطر‬ ‫وهذه‬ ‫الخلف‬ ‫إلى‬ ‫واحد‬ ‫صف‬‫الثاني‬ ‫اإلصدار‬ ‫في‬ ‫موجودة‬ ‫يقة‬
‫الـ‬ ‫من‬JDBC‫تليها‬ ‫التي‬ ‫واإلصدارات‬.
relative/absolute:‫الطريقة‬relative‫سواء‬ ‫الصفوف‬ ‫من‬ ‫نسبي‬ ‫عدد‬ ‫المؤشر‬ ‫تحريك‬ ‫على‬ ‫تقوم‬
‫إيجابي‬ ‫كان‬(‫لألعلى‬ ‫أي‬)‫سلبي‬ ‫أو‬(‫لألسفل‬).‫الطريقة‬ ‫أما‬absolute‫المؤشر‬ ‫تحريك‬ ‫على‬ ‫تقوم‬ ‫فهي‬
‫معين‬ ‫الصف‬ ‫رقم‬ ‫إلى‬.‫ك‬ ‫إذا‬‫الطريقة‬ ‫قيمة‬ ‫انت‬absolute‫نهاية‬ ‫في‬ ‫سيكون‬ ‫المؤشر‬ ‫وضع‬ ‫فإن‬ ‫سلبية‬
‫الـ‬ResultSet‫في‬ ‫مدعومة‬ ‫وهي‬JDBC 2.0.
getXxx:‫هذا‬ ‫ذكرنا‬ ‫وقد‬ ‫العامود‬ ‫دليل‬ ‫أو‬ ‫العامود‬ ‫اسم‬ ‫بحسب‬ ‫ذالك‬ ‫محدد‬ ‫عامود‬ ‫من‬ ‫قيمة‬ ‫لنا‬ ‫تعيد‬
‫الطريقة‬ ‫هذه‬ ‫لنا‬ ‫تعيد‬ ‫أن‬ ‫ويمكن‬ ‫سبق‬ ‫ما‬ ‫في‬ ‫الطريقة‬0‫أو‬null‫قي‬ ‫كانت‬ ‫إذا‬‫الـ‬ ‫مة‬SQL‫هي‬null.
‫هي‬ ‫أهمها‬ ‫من‬ ‫لكن‬ ‫طويل‬ ‫عنها‬ ‫والحديث‬ ‫المرجعة‬ ‫القيم‬ ‫من‬ ‫كثير‬ ‫الطريقة‬ ‫لهذه‬getString‫و‬
getInt‫و‬getFloat‫و‬getDouble‫الطريقة‬ ‫باستخدام‬ ‫الحقل‬ ‫مع‬ ‫ثنائية‬ ‫قناة‬ ‫فتح‬ ً‫ا‬‫أيض‬ ‫يمكنك‬ ‫و‬
getBinaryStream‫الـ‬ ‫الطرق‬ ‫من‬ ‫الكثير‬ ‫وهناك‬get‫قاعد‬ ‫من‬ ‫بيانات‬ ‫على‬ ‫للحصول‬‫البيانات‬ ‫ة‬.
wasNull:‫الطريقة‬ ‫من‬ ‫قيمة‬ ‫على‬ ‫حصول‬ ‫أخر‬ ‫اختبار‬ ‫في‬ ‫تقوم‬getXxx‫الـ‬ ‫قيمة‬ ‫كان‬ ‫إذا‬ ‫فيما‬SQL
‫هي‬null‫ال‬ ‫أم‬.
findColumn:‫الـ‬ ‫في‬ ‫محدد‬ ‫عامود‬ ‫دليل‬ ‫تعيد‬ResultSet‫العامود‬ ‫اسم‬ ‫معرفة‬ ‫من‬ ‫وذلك‬.
getRow:‫الجدول‬ ‫في‬ ‫الحالي‬ ‫الصف‬ ‫رقم‬ ‫لك‬ ‫تعيد‬.‫ه‬ ‫صف‬ ‫أول‬ ‫دليل‬ ‫انه‬ ‫مالحظة‬‫و‬1‫وليس‬0.
getMetaData:‫نمط‬ ‫من‬ ‫غرض‬ ‫الطريقة‬ ‫هذه‬ ‫لنا‬ ‫تعيد‬ResultSetMetaData‫تصف‬ ‫وهي‬
ResultSet. ResultSetMetaData‫تعطيك‬ ‫التي‬‫أعداد‬‫المعلومات‬ ‫من‬ ‫وغيرها‬ ‫واسمها‬ ‫األعمدة‬.
‫الطريقة‬getMetaDataً‫ا‬‫جد‬ ‫مفيدة‬‫نمط‬ ‫من‬ ‫يكون‬ ‫غرض‬ ‫من‬ ‫عليه‬ ‫وتحصل‬ResultSet‫هذا‬ ‫لنا‬ ‫وتعيد‬
‫الطريق‬‫نمط‬ ‫من‬ ‫غرض‬ ‫ة‬ResultSetMetaData.‫معالجة‬ ‫بعملية‬ ‫تقوم‬ ‫أن‬ ‫أجل‬ ‫من‬ ‫أنت‬‫بشكل‬ ‫الجدول‬
‫وهذا‬ ‫األعمدة‬ ‫ونمط‬ ‫ورقم‬ ‫اسم‬ ‫تعرف‬ ‫أن‬ ‫عليك‬ ‫فإنه‬ ‫صحيحة‬‫الصف‬ ‫دور‬ ‫هو‬ResultSetMetaData‫الذي‬
‫الـ‬ ‫في‬ ‫األعمدة‬ ‫وأنواع‬ ‫وعدد‬ ‫اسم‬ ‫تحدد‬ ‫يتم‬ ‫خالله‬ ‫من‬ResultSet.
‫ل‬ ‫قائمة‬ ‫هي‬ ‫هذه‬‫الصف‬ ‫في‬ ‫المفيدة‬ ‫طرق‬ResultSetMetaData:
getColumnCount:‫الـ‬ ‫في‬ ‫األعمدة‬ ‫أعداد‬ ‫لنا‬ ‫تعيد‬ResultSet.
getColumnName:‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫العامود‬ ‫اسم‬ ‫لنا‬ ‫تعيد‬.‫أول‬ ‫دليل‬ ‫انه‬ ‫مالحظة‬‫عامود‬‫هو‬1‫وليس‬0.
getColumnType:‫الـ‬ ‫بيانات‬ ‫نمط‬ ‫لنا‬ ‫تعيد‬SQL‫العامود‬ ‫في‬.‫قيم‬ ‫مقارنة‬ ‫يمكن‬sql‫في‬ ‫يقابله‬ ‫بما‬
‫ا‬‫من‬ ‫ذلك‬ ‫لجافة‬java.sql.Types.
isReadOnly:‫فقط‬ ‫للقراءة‬ ‫هي‬ ‫القيم‬ ‫إدخال‬ ‫كان‬ ‫إذا‬ ‫فيما‬ ‫تشير‬.
isSearchable:‫استخدام‬ ‫ممكن‬ ‫كان‬ ‫إذا‬ ‫فيما‬ ‫تشير‬‫جملة‬WHERE‫العامد‬ ‫في‬.
isNullable:‫قيمة‬ ‫تخزين‬ ‫كان‬ ‫إذا‬ ‫فيما‬ ‫تشير‬null‫قانوني‬ ‫غير‬ ‫العامود‬ ‫في‬.
‫مالحظة‬:‫أن‬ResultSetMetaData‫يحو‬ ‫ال‬‫فقم‬ ‫الصفوف‬ ‫عدد‬ ‫معرفة‬ ‫أردة‬ ‫فإذا‬ ‫الصفوف‬ ‫عدد‬ ‫عن‬ ‫معلومات‬ ‫ي‬
‫عندك‬ ‫كان‬ ‫إذا‬ ‫يلي‬ ‫بما‬JDBC 2.0‫باستدعاد‬ ‫قم‬‫الطريقة‬last‫في‬ResultSet‫إلى‬ ‫المؤشر‬ ‫تحرك‬ ‫التي‬‫أخر‬
‫الطريقة‬ ‫باستدعاء‬ ‫قم‬ ‫وبعدها‬ ‫صف‬getRow‫عدد‬ ‫وهو‬ ‫األخير‬ ‫سيكون‬ ‫وهو‬ ‫الحالي‬ ‫الصف‬ ‫لنا‬ ‫تعيد‬ ‫عندها‬
‫الصفوف‬.‫كان‬ ‫إذا‬ ‫أما‬‫عندك‬JDBC 1.0‫الطريقة‬ ‫خالل‬ ‫من‬ ‫هو‬ ‫اإلصدار‬ ‫هذا‬ ‫في‬ ‫الوحيدة‬ ‫الطريقة‬next‫قم‬
‫حلقة‬ ‫في‬ ‫بوضعها‬while‫بوضع‬ ‫وقم‬‫فإذا‬ ‫عداد‬‫قيمة‬ ‫كانت‬next‫هي‬false‫صف‬ ‫أخر‬ ‫يكون‬ ‫عندها‬.
‫االتصال‬ ‫إغالق‬
‫أجل‬ ‫من‬‫إغالق‬‫يلي‬ ‫بما‬ ‫قم‬ ‫االتصال‬:
connection.close();
‫إن‬‫من‬ ‫كل‬ ‫إغالق‬ ‫يعني‬ ‫االتصال‬ ‫إغالق‬‫الكائنين‬Statement‫و‬ResultSet.
‫متأكد‬ ‫تكون‬ ‫عندما‬ ‫االتصال‬ ‫إغالق‬ ‫عليك‬ ‫ينبغي‬ ‫إذا‬‫ب‬‫أن‬‫ك‬‫عملية‬ ‫بأي‬ ‫تقوم‬ ‫لن‬‫معالجة‬‫أ‬‫و‬‫بيانات‬ ‫استعالم‬.
‫بيانات‬ ‫قاعدة‬ ‫مع‬ ‫اتصال‬ ‫مثال‬MySQL
‫من‬ ‫كل‬ ‫نستخدم‬ ‫سوف‬ ‫المثال‬ ‫هذا‬ ‫في‬select‫و‬insert‫إضافة‬ ‫عن‬ ‫عبارة‬ ‫هو‬ ‫والمثال‬‫منشور‬‫الفيس‬ ‫في‬ ‫كما‬
‫بوك‬‫أخر‬ ‫أن‬ ‫مبسط‬ ‫بشكل‬ ‫لكن‬‫منشور‬‫أول‬ ‫سيكون‬ ‫أضيفه‬‫منشور‬‫يظهر‬.‫اسمها‬ ‫ولتكن‬ ‫البيانات‬ ‫قاعدة‬ ‫ننشئ‬ ‫اآلن‬
test‫اسمه‬ ‫جدول‬ ‫وننشئ‬post‫رقم‬ ‫األول‬ ‫عامودان‬ ‫يتضمن‬‫المنشور‬id_post‫محتوى‬ ‫والثاني‬‫المنشور‬
p_content.
‫الـ‬ ‫تعليمات‬SQL‫العملية‬ ‫هذه‬ ‫أجل‬ ‫من‬
CREATE DATABASE `test1` ;
CREATE TABLE `test1`.`post` (`id_post` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT
PRIMARY KEY ,`p_content` TEXT NOT NULL) ENGINE = InnoDB;
‫مكان‬ ‫يظهر‬ ‫األول‬ ‫سيرفلتان‬ ‫ننشئ‬ ‫بعدها‬‫إدخال‬‫المنشور‬‫اإلضافة‬ ‫وزر‬‫المنشور‬‫يكون‬ ‫الزر‬ ‫من‬ ‫األسفل‬ ‫وفي‬
‫موجود‬‫المنشورات‬‫الضغط‬ ‫عند‬‫بحشر‬ ‫يقوم‬ ‫الذي‬ ‫الثاني‬ ‫سرفلت‬ ‫إلى‬ ‫ينقلنا‬ ‫الزر‬ ‫على‬‫المنشور‬‫البيانات‬ ‫قاعدة‬ ‫في‬
‫األول‬ ‫السرفلت‬ ‫إلى‬ ‫بتوجيهك‬ ‫ويقم‬.
‫واسمه‬ ‫األول‬ ‫السرفلت‬ ‫اآلن‬ShowPost
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ShowPost extends HttpServlet {
void processRequest (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
response.setContentType("text/html;charset=UTF-8");
try {Class.forName("com.mysql.jdbc.Driver").newInstance();//1
} catch (Exception ex) {//1
throw new SecurityException("class not found. " + ex.toString());//1
}//1
String hostName = "localhost:3306";//2
String dbName = "test1";//2
String MySqlURL = "jdbc:mysql://"+hostName+"/"+dbName;//2
String user = "root";//3
String password = "";//3
Connection connection = DriverManager.getConnection(MySqlURL, user, password);//3
Statement statement = connection.createStatement();//4
String query = "SELECT * FROM `post` ORDER BY `post`.`id_post` DESC";//5
ResultSet resultSet = statement.executeQuery(query);//5
PrintWriter out = response.getWriter();
try {
out.println("<html><head><title>Servlet ShowPost</title></head>");
out.println("<body> ");
out.println("<form action="http://localhost:8085/CreatePost/InsertPost" method="post">"
+"<textarea name="post" ></textarea><br/>"
+"<input type="submit" value="post"/>"
+"</form>");
while(resultSet.next()) //6
{
out.println(resultSet.getString(2)+"<hr/>"); //6
}
out.println("</body></html>");
} finally {
out.close();
}
connection.close();//7
}//end processRequest
‫تتمة‬ShowPost
‫واسمه‬ ‫الثاني‬ ‫السرفلت‬ ‫اآلن‬InsertPost
‫بمشروع‬ ‫القيام‬ ‫تريد‬ ‫عندما‬ ‫نصائح‬‫البيانات‬ ‫بقواعد‬ ‫اتصال‬ ‫فيه‬‫بص‬ ‫قم‬‫مساعد‬ ‫صف‬ ‫نع‬‫بإنشاء‬ ‫وقم‬ ‫االتصال‬ ‫إلنشاء‬
‫عميل‬ ‫عليك‬ ‫تسهل‬ ‫بحيث‬ ‫إليها‬ ‫بحاجة‬ ‫أنت‬ ‫التي‬ ‫العمليات‬ ‫من‬ ‫وغيرها‬ ‫واستعالم‬ ‫والحذف‬ ‫والحشر‬ ‫لتعديل‬ ‫طرق‬
‫عليه‬ ‫والسيطرة‬ ‫البرنامج‬ ‫وتعديل‬ ‫البرمجة‬
‫التدريب‬ ‫اجل‬ ‫من‬ ‫واجبات‬
1.‫فكرة‬ ‫بتطوير‬ ‫قم‬‫المنشورات‬‫لكل‬ ‫تعليق‬ ‫بوضع‬ ‫وقم‬‫منشور‬
2.‫ال‬ ‫بتطوير‬ ‫قم‬‫عملية‬ ‫بوضع‬ ‫وقم‬ ‫السابقة‬ ‫فكرة‬‫اإلعجاب‬‫المنشور‬ ‫و‬ ‫التعليق‬ ‫من‬ ‫لكل‬
3.‫بساعة‬ ‫تصويته‬ ‫بعد‬ ‫التصويت‬ ‫يستطيع‬ ‫الشخص‬ ‫وأجعل‬ ‫الموقع‬ ‫تقيم‬ ‫لعملية‬ ‫مشابه‬ ‫شيء‬ ‫أنشاء‬ ‫قم‬
4.‫صفحة‬ ‫تطبيق‬ ‫بإنشاء‬ ‫قم‬index‫واالسم‬ ‫رقم‬ ‫ويتضمن‬ ‫الطالب‬ ‫لتسجل‬ ‫األول‬ ‫رابطين‬ ‫لك‬ ‫تعرض‬‫و‬
‫االختصاص‬‫والصف‬‫الهواية‬‫لكل‬ ‫زران‬ ‫هناك‬ ‫العرض‬ ‫وفي‬ ‫المسجلين‬ ‫عرض‬ ‫الثاني‬ ‫والرابط‬‫طالب‬
‫بياناته‬ ‫لتعديل‬ ‫والثاني‬ ‫الطالب‬ ‫لحذف‬ ‫األول‬
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class InsertPost extends HttpServlet {
void processRequest (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
String post=request.getParameter("post");
response.setContentType("text/html;charset=UTF-8");
try {Class.forName("com.mysql.jdbc.Driver").newInstance();//1
} catch (Exception ex) {//1
throw new SecurityException("class not found. " + ex.toString());//1
}//1
String hostName = "localhost:3306";//2
String dbName = "test1";//2
String MySqlURL = "jdbc:mysql://"+hostName+"/"+dbName;//2
String user = "root";//3
String password = "";//3
Connection connection = DriverManager.getConnection(MySqlURL, user, password);//3
Statement statement = connection.createStatement();//4
String query = "INSERT INTO `test1`.`post` ( `id_post` , `p_content` ) VALUES ( NULL , '"+post+"' );";//5
int resultSet = statement.executeUpdate(query);//5
connection.close();//7
response.sendRedirect("http://localhost:8085/CreatePost/ShowPost");
}//end processRequest
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try { processRequest(request, response);
} catch (SQLException ex) {}
}//end doPost
} end servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try { processRequest(request, response);
} catch (SQLException ex) {}
}//end doGet
}//end servlet

Mais conteúdo relacionado

Semelhante a الدرس العاشر

1366136913.9485 نظم ادارة قواعد البيانات 2
1366136913.9485 نظم ادارة  قواعد البيانات 21366136913.9485 نظم ادارة  قواعد البيانات 2
1366136913.9485 نظم ادارة قواعد البيانات 2
mh ED
 
Telegram_@haaseb_بوربوينت_المهارات_الرقمية_3م_ف2_الوحدة_3_الدرس (5).pptx
Telegram_@haaseb_بوربوينت_المهارات_الرقمية_3م_ف2_الوحدة_3_الدرس (5).pptxTelegram_@haaseb_بوربوينت_المهارات_الرقمية_3م_ف2_الوحدة_3_الدرس (5).pptx
Telegram_@haaseb_بوربوينت_المهارات_الرقمية_3م_ف2_الوحدة_3_الدرس (5).pptx
hrima
 
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
Crossref
 

Semelhante a الدرس العاشر (20)

VB.net Database Chapter 1
VB.net Database Chapter 1VB.net Database Chapter 1
VB.net Database Chapter 1
 
مقدمة في قواعد البيانات
مقدمة في قواعد البياناتمقدمة في قواعد البيانات
مقدمة في قواعد البيانات
 
Database Administration
Database AdministrationDatabase Administration
Database Administration
 
أنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البياناتأنظمة ادارة قواعد البيانات
أنظمة ادارة قواعد البيانات
 
الدرس الثالث عشر
الدرس الثالث عشرالدرس الثالث عشر
الدرس الثالث عشر
 
قواعد البيانات.ppt
قواعد البيانات.pptقواعد البيانات.ppt
قواعد البيانات.ppt
 
1366136913.9485 نظم ادارة قواعد البيانات 2
1366136913.9485 نظم ادارة  قواعد البيانات 21366136913.9485 نظم ادارة  قواعد البيانات 2
1366136913.9485 نظم ادارة قواعد البيانات 2
 
What is no sql
What is no sqlWhat is no sql
What is no sql
 
الدرس الرابع عشر
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشر
 
Using R For Statistics
Using R For StatisticsUsing R For Statistics
Using R For Statistics
 
مقدمة في قواعد البيانات
مقدمة في قواعد البياناتمقدمة في قواعد البيانات
مقدمة في قواعد البيانات
 
STRUCTURE EMGRATION BY DATANOMICS
STRUCTURE EMGRATION BY DATANOMICSSTRUCTURE EMGRATION BY DATANOMICS
STRUCTURE EMGRATION BY DATANOMICS
 
معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز
 
كيفية الحصول على شهادات اوراكل
كيفية الحصول على شهادات اوراكلكيفية الحصول على شهادات اوراكل
كيفية الحصول على شهادات اوراكل
 
Telegram_@haaseb_بوربوينت_المهارات_الرقمية_3م_ف2_الوحدة_3_الدرس (5).pptx
Telegram_@haaseb_بوربوينت_المهارات_الرقمية_3م_ف2_الوحدة_3_الدرس (5).pptxTelegram_@haaseb_بوربوينت_المهارات_الرقمية_3م_ف2_الوحدة_3_الدرس (5).pptx
Telegram_@haaseb_بوربوينت_المهارات_الرقمية_3م_ف2_الوحدة_3_الدرس (5).pptx
 
ad
adad
ad
 
الأوراكل
الأوراكلالأوراكل
الأوراكل
 
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
تسجيل المحتوي مع كروس رف – ندوة عبر الانترنت باللغة العربية | Content Registr...
 
الوحدة الاولى - قاعدة البيانات وادارتها
الوحدة الاولى - قاعدة البيانات وادارتهاالوحدة الاولى - قاعدة البيانات وادارتها
الوحدة الاولى - قاعدة البيانات وادارتها
 
Database concepts
Database conceptsDatabase concepts
Database concepts
 

Mais de Anas Aloklah (13)

الدرس السادس عشر
الدرس السادس عشرالدرس السادس عشر
الدرس السادس عشر
 
الدرس الخامس عشر
الدرس الخامس عشرالدرس الخامس عشر
الدرس الخامس عشر
 
مقدمة قواعد بيانات أوراكل
مقدمة قواعد بيانات أوراكلمقدمة قواعد بيانات أوراكل
مقدمة قواعد بيانات أوراكل
 
الدرس الثاني عشر
الدرس الثاني عشرالدرس الثاني عشر
الدرس الثاني عشر
 
الدرس التاسع
الدرس التاسعالدرس التاسع
الدرس التاسع
 
الدرس الثامن
الدرس الثامنالدرس الثامن
الدرس الثامن
 
الدرس السابع
الدرس السابعالدرس السابع
الدرس السابع
 
الدرس السادس
الدرس السادسالدرس السادس
الدرس السادس
 
الدرس الخامس
الدرس الخامسالدرس الخامس
الدرس الخامس
 
الدرس الرابع
الدرس الرابعالدرس الرابع
الدرس الرابع
 
الدرس الثالث
الدرس الثالثالدرس الثالث
الدرس الثالث
 
الدرس الثاني
الدرس الثانيالدرس الثاني
الدرس الثاني
 
Introduction in jsp & servlet
Introduction in jsp & servlet Introduction in jsp & servlet
Introduction in jsp & servlet
 

الدرس العاشر

  • 1. ‫الرحيم‬ ‫الرحمن‬ ‫هللا‬ ‫بسم‬ ‫سوف‬ ‫الدرس‬ ‫اليوم‬‫التعامل‬ ‫يكون‬‫البيانات‬ ‫قواعد‬ ‫مع‬‫بالـ‬JDBC ‫هو‬ ‫الدرس‬ ‫بهذا‬ ‫سنأخذه‬ ‫ما‬: ‫البيانات‬ ‫قواعد‬ ‫هي‬ ‫ما‬ ‫هي‬ ‫ما‬JDBC ‫أجل‬ ‫من‬ ‫األساسية‬ ‫السبع‬ ‫الخطوات‬‫الوصول‬‫إلى‬‫البيانات‬ ‫قواعد‬ ‫مع‬ ‫اتصال‬ ‫مثال‬‫قاعدة‬MySQL ‫التدريب‬ ‫أجل‬ ‫من‬ ‫الواجبات‬ ‫بعض‬ ‫ه‬ ‫ما‬‫البيانات‬ ‫قواعد‬ ‫ي‬ ‫هي‬‫مجموعة‬‫من‬‫عناصر‬‫البيانات‬‫المنطقية‬‫المرتبطة‬‫مع‬‫بعضها‬‫البعض‬‫بعالقة‬‫وتتكون‬ ،‫رياضية‬‫قاعدة‬‫البيانات‬ ‫من‬‫جدول‬(Table)‫واحد‬‫أو‬‫أكثر‬‫من‬‫ويتكون‬ ‫جدول‬‫الجدول‬‫من‬‫سجل‬(Record)‫أو‬‫أكثر‬‫من‬‫سجل‬‫ويتكون‬ ‫السجل‬‫من‬‫حقل‬(Field)‫أو‬‫أكثر‬‫من‬‫حقل‬. ‫تعريف‬ ‫ليس‬ ‫هذا‬‫البيانات‬ ‫قواعد‬ ‫عن‬ ‫درس‬ ‫وليس‬ ‫بالجافا‬ ‫البيانات‬ ‫قواعد‬ ‫مع‬ ‫التعامل‬ ‫الدرس‬ ‫هذا‬ ‫ألن‬ ‫البيانات‬ ‫لقواعد‬ ‫شامل‬ ‫هي‬ ‫ما‬JDBC ‫كلمة‬JDBC‫لـ‬ ‫اختصار‬ ‫هي‬Java DataBase Connectivity‫طريق‬ ‫عن‬ ‫البيانات‬ ‫بقواعد‬ ‫االتصال‬ ‫تعني‬ ‫وهي‬ ‫الجافة‬‫مجموع‬ ‫مع‬ ‫للتعامل‬ ‫مكتبة‬ ‫لك‬ ‫تؤمن‬ ‫واجها‬ ‫عن‬ ‫عبارة‬ ‫هي‬‫ة‬‫واسعة‬‫البيانات‬ ‫قواعد‬ ‫من‬‫لك‬ ‫يؤمن‬ ‫كما‬ ‫بلغة‬ ‫البيانات‬ ‫قواعد‬ ‫مع‬ ‫التخاطب‬ ‫أجل‬ ‫من‬ ‫مستوى‬SQL. ‫الدريفرات‬ ‫معرفة‬ ‫أجل‬ ‫من‬ ‫رابط‬ ‫هذا‬(‫بر‬‫ن‬‫المعطيات‬ ‫لقواعد‬ ‫الوصول‬ ‫امج‬)‫في‬ ‫المتاحة‬JDBC un.com/products/jdbc/drivershttp://industry.java.s http://developers.sun.com/product/jdbc/drivers ‫البيانات‬ ‫لقواعد‬ ‫الوصول‬ ‫أجل‬ ‫من‬ ‫السبع‬ ‫الخطوات‬ ‫وت‬ ‫والحشر‬ ‫وجلب‬ ‫البيانات‬ ‫قواعد‬ ‫إلى‬ ‫الوصول‬ ‫أجل‬ ‫من‬ ‫الضرورية‬ ‫الخطوات‬ ‫هذا‬‫عديل‬. 1.‫الـ‬ ‫درايفر‬ ‫تحميل‬JDBC:‫من‬ ‫البيانات‬ ‫قاعدة‬ ‫درايفر‬ ‫من‬ ‫الصف‬ ‫اسم‬ ‫تحديد‬ ‫عليك‬ ‫الدريفر‬ ‫لتحميل‬ ‫الطريقة‬Class.forName،‫بذالك‬‫لـ‬ ‫الدريفر‬ ‫إدارة‬ ‫في‬ ‫وتسجل‬ ‫لدرايفر‬ ‫حالة‬ ً‫ا‬‫تلقائي‬ ‫تنشأ‬JDBC. 2.‫االتصال‬ ‫رابط‬ ‫تحديد‬:‫الـ‬ ‫في‬JDBC‫المضيف‬ ‫تحديد‬ ‫عليك‬ ‫بالسيرفر‬ ‫االتصال‬ ‫لربط‬(host)‫والمنفذ‬ (port)‫البيانات‬ ‫قاعدة‬ ‫واسم‬. 3.‫االتصال‬ ‫تأسيس‬:‫المستخد‬ ‫اسم‬ ‫هناك‬ ‫االتصال‬ ‫رابط‬ ‫مع‬‫م‬‫بقاعدة‬ ‫االتصال‬ ‫تأسيس‬ ‫أجل‬ ‫من‬ ‫المرور‬ ‫وكلمة‬ ‫البيانات‬.‫االتصال‬ ‫قاعدة‬ ‫إغالق‬ ‫حتى‬ ‫البيانات‬ ‫لقاعدة‬ ‫استعالم‬ ‫تنفيذ‬ ‫يمكنك‬ ‫االتصال‬ ‫تأسيس‬ ‫وبمجرد‬. 4.‫الغرض‬ ‫أنشاء‬Statement:‫أنشاء‬ ‫إن‬‫غرض‬‫نمط‬ ‫من‬Statement‫وأوامر‬ ‫استعالم‬ ‫إرسال‬ ‫لك‬ ‫يتيح‬ ‫إلى‬‫البيانات‬ ‫قاعدة‬. 5.‫التحديث‬ ‫أو‬ ‫االستعالم‬ ‫تنفيذ‬:‫نمط‬ ‫من‬ ‫غرض‬ ‫على‬ ‫حصولك‬ ‫عند‬Statement‫إرسال‬ ‫يمكنك‬ ‫فإنه‬ ‫عبارات‬SQL‫الطرق‬ ‫بتنفيذ‬ ‫ذالك‬ ‫البيانات‬ ‫قاعدة‬ ‫إلى‬executeQuery‫أو‬executeUpdate‫أو‬ executeBatch. 6.‫النتائج‬ ‫معالجة‬:‫نمط‬ ‫من‬ ‫غرض‬ ‫إرجاع‬ ‫يتم‬ ‫فإنه‬ ‫البيانات‬ ‫قاعدة‬ ‫استعالم‬ ‫تنفيذ‬ ‫عند‬ResultSet‫هذا‬ ‫ال‬ ‫من‬ ‫مجموعة‬ ‫يمثل‬ ‫الغرض‬‫صفوف‬‫الطريقة‬ ‫باستدعاء‬ ‫معالجتها‬ ‫يمكنك‬ ‫الذي‬ ‫واألعمدة‬next‫و‬ ‫لـ‬ ‫المختلفة‬ ‫الطرق‬getXxx‫حيث‬Xxx‫من‬ ‫الحقل‬ ‫من‬ ‫تريده‬ ‫الذي‬ ‫نمط‬ ‫هي‬etc,.., String, flout , int. 7.‫ا‬ ‫إغالق‬‫التصال‬:‫إغالق‬ ‫عليك‬ ‫ينبغي‬ ‫عندها‬ ‫النتائج‬ ‫ومعالجات‬ ‫االستعالم‬ ‫عمليات‬ ‫من‬ ‫تنتهي‬ ‫عنما‬ ‫االتصال‬. ‫بالتفصيل‬ ‫وشرحها‬ ‫خطوة‬ ‫كل‬ ‫إلى‬ ‫نأتي‬ ‫سوف‬ ‫اآلن‬
  • 2. ‫الـ‬ ‫درايفر‬ ‫تحميل‬JDBC ‫البيانات‬ ‫قاعدة‬ ‫خادم‬ ‫مع‬ ‫التخاطب‬ ‫يمكنها‬ ‫التي‬ ‫برمجيات‬ ‫من‬ ‫جزء‬ ‫عن‬ ‫عبارة‬ ‫هو‬ ‫الدريفر‬‫الحقيقية‬.‫لتحميل‬ ‫الدريفر‬‫إدارة‬ ‫في‬ ‫بتسجيلك‬ ‫وتقوم‬ ‫الدرايفر‬ ‫من‬ ‫حالة‬ ‫لك‬ ‫تنشأ‬ ً‫ا‬‫تلقائي‬ ‫وهي‬ ‫المناسب‬ ‫الصف‬ ‫اختيار‬ ‫عليك‬ ‫فقط‬ ‫ال‬‫لـ‬ ‫دريفر‬JDBC. ‫الطريقة‬ ‫استخدام‬ ‫عليك‬ ‫الدريفر‬ ‫تحميل‬ ‫اجل‬ ‫من‬Class.forName‫نمط‬ ‫من‬ ‫وسيط‬ ‫الطريقة‬ ‫هذه‬ ‫وتأخذ‬String ‫الصف‬ ‫اسم‬ ‫يمثل‬ ‫وهو‬(classname)‫ا‬ ‫يلقي‬ ‫سوف‬ ‫االستدعاء‬ ‫هذا‬‫الشكل‬ ‫من‬ ‫ستثناء‬ClassNotFoundException ‫داخل‬ ‫الدريفر‬ ‫تحميل‬ ‫يكون‬ ‫أن‬ ‫يجب‬ ‫لذالك‬try/catch‫يلي‬ ‫كما‬ ‫يعني‬: try { Class.forName("connect.microsoft.MicrosoftDriver"); Class.forName("oracle.jdbc.driver.OracleDriver"); Class.forName("com.sybase.jdbc.SybDriver"); } catch(ClassNotFoundException cnfe) { System.err.println("Error loading driver: " + cnfe); } ‫الطريقة‬ ‫في‬ ‫صف‬ ‫مسار‬ ‫أي‬ ‫استخدام‬ ‫يمكنك‬ ‫فإنه‬ ‫المبدأ‬ ‫حيث‬ ‫من‬Class.forName‫في‬ ‫ولكن‬‫الممارسة‬‫العملي‬‫ة‬ ‫الدرايفرات‬ ‫معظم‬ ‫فإن‬JDBC‫ملفات‬ ‫داخل‬ ‫تكون‬JAR،‫بتض‬ ‫قمت‬ ‫أنك‬ ‫من‬ ‫تأكد‬ ‫لذالك‬‫ما‬ ‫حسب‬ ‫الصف‬ ‫مسار‬ ‫مين‬ ‫ملف‬ ‫في‬ ‫موجود‬ ‫هو‬JAR‫الدليل‬ ‫في‬ ‫الملف‬ ‫بوضع‬ ‫وقم‬WEB-INF/lib‫بك‬ ‫الخاص‬ ‫الويب‬ ‫تطبيق‬ ‫في‬. ‫ملف‬ ‫بوضع‬ ‫قم‬ ‫فهنا‬ ‫معينة‬ ‫البيانات‬ ‫لقاعدة‬ ‫درايفر‬ ‫نفس‬ ‫يستخدم‬ ‫تطبيق‬ ‫من‬ ‫أكثر‬ ‫هناك‬ ‫كان‬ ‫حال‬ ‫في‬JAR‫في‬‫دليل‬ ‫لملفات‬ ‫مكان‬ ‫له‬ ‫سيرفر‬ ‫كل‬ ‫في‬ ‫السيرفر‬ ‫قبل‬ ‫من‬ ‫مشترك‬JAR. ‫االتصال‬ ‫رابط‬ ‫تحديد‬ ‫من‬ ‫االنتهاء‬ ‫وبمجرد‬‫الـ‬ ‫درايفر‬ ‫تحميل‬JDBC‫عليك‬ ‫ينبغي‬ ‫فإنه‬ ،‫موقع‬ ‫تحديد‬‫البيانات‬ ‫قاعدة‬ ‫خادم‬.‫لروابط‬ ‫اإلشارة‬ ‫عليك‬ ‫الـ‬ ‫البيانات‬ ‫قواعد‬ ‫استخدام‬JDBC‫ما‬ ‫إلى‬‫يلي‬:‫الموقع‬ ‫المضيف‬ ‫تضمين‬ ‫عليك‬ ‫البروتوكول‬(host)‫واسم‬ ‫والمنفذ‬ ‫إش‬ ‫يجب‬ ‫كله‬ ‫هذا‬ ‫البيانات‬ ‫قاعدة‬‫ذالك‬ ‫على‬ ‫مثال‬ ‫هذا‬ ‫الرابط‬ ‫في‬ ‫ارته‬. String host = "dbhost.yourcompany.com"; String dbName = "someName"; int port = 1234; String oracleURL = "jdbc:oracle:thin:@" + host + ":" + port + ":" + dbName; String sybaseURL = "jdbc:sybase:Tds:" + host + ":" + port + ":" + "?SERVICENAME=" + dbName; ‫االتصال‬ ‫تأسيس‬ ‫تمرير‬ ‫عليك‬ ‫فعال‬ ‫االتصال‬ ‫لجعل‬‫وهي‬ ‫الوسطاء‬‫الرابط‬‫االتصال‬(URL)‫وكلمة‬ ‫البيانات‬ ‫لقاعدة‬ ‫المستخدم‬ ‫واسم‬ ‫لطريقة‬ ‫البيانات‬ ‫لقاعدة‬ ‫المرور‬getConnection‫الصف‬ ‫من‬ ‫هي‬ ‫التي‬DriverManager. ‫لتوضيح‬ ‫مثال‬ ‫هذا‬ String username = "jay_debesee"; String password = "secret"; Connection connection = DriverManager.getConnection(oracleURL, username, password); ‫الطريقة‬ ‫أن‬ ‫نالحظ‬getConnection‫نمط‬ ‫من‬ ‫غرض‬ ‫لنا‬ ‫تعيد‬Connection. ‫الصف‬ ‫أن‬Connection‫إليها‬ ‫نتعرف‬ ‫دعونا‬ ‫مفيدة‬ ‫طرق‬ ‫على‬ ‫يحوي‬ prepareStatement:‫البيانات‬ ‫لقاعدة‬ ‫لتقدمها‬ ‫الترجمة‬ ‫قبل‬ ‫استعالم‬ ‫تخلق‬ ‫الطريقة‬ ‫بهذه‬ prepareCall:‫البيانات‬ ‫قاعدة‬ ‫في‬ ‫مخزنة‬ ‫إجراءات‬ ‫إلى‬ ‫يصل‬ rollback/commit:‫العمليات‬ ‫إدارة‬ ‫في‬ ‫يتحكم‬ close:‫البيانات‬ ‫بقاعدة‬ ‫االتصال‬ ‫يغلق‬ isClosed:‫صريح‬ ‫بشكل‬ ‫مغلق‬ ‫أو‬ ‫مهمل‬ ‫االتصال‬ ‫كان‬ ‫إذا‬ ‫التحقق‬ ‫يتم‬. ‫أيض‬ ‫هناك‬‫فاستخدم‬ ‫البيانات‬ ‫قاعدة‬ ‫عن‬ ‫المعلومات‬ ‫بعض‬ ‫تريد‬ ‫كنت‬ ‫إذا‬ ‫وهو‬ ‫البيانات‬ ‫قاعدة‬ ‫تأسيس‬ ‫في‬ ‫جزء‬ ً‫ا‬ ‫الطريقة‬getMetaData‫نمط‬ ‫من‬ ‫غرض‬ ‫لك‬ ‫تعيد‬ ‫الطريقة‬ ‫هذا‬DatabaseMetaData‫تكشف‬ ‫الطريقة‬ ‫هذا‬ ‫هي‬ ‫والطرق‬ ‫البيانات‬ ‫قاعدة‬ ‫وإصدار‬ ‫اسم‬ ‫لك‬getDatabaseProductName, getDatabaseProductVersion)) ‫الـ‬ ‫درايفر‬ ‫أو‬JDBC‫الطرق‬ ‫هي‬ ‫وهذه‬(getDriverName, getDriverVersion)‫ذالك‬ ‫على‬ ‫مثال‬ ‫وهذا‬:
  • 3. DatabaseMetaData dbMetaData = connection.getMetaData(); String productName = dbMetaData.getDatabaseProductName(); System.out.println("Database: " + productName); String productVersion =dbMetaData.getDatabaseProductVersion(); System.out.println("Version: " + productVersion); ‫الغرض‬ ‫أنشاء‬Statement ‫نمط‬ ‫من‬ ‫الغرض‬Statement‫الغرض‬ ‫أنشاء‬ ‫ويتم‬ ‫البيانات‬ ‫لقاعدة‬ ‫وأوامر‬ ‫استعالمات‬ ‫إرسال‬ ‫أجل‬ ‫من‬ ‫يستخدم‬ ‫نمط‬ ‫من‬ ‫غرض‬ ‫من‬Connection‫هي‬ ‫الطريقة‬ ‫باستخدام‬createStatement‫كتالي‬ ‫األمر‬ ‫ويكون‬: Statement statement = connection.createStatement(); ‫التحديث‬ ‫أو‬ ‫االستعالم‬ ‫تنفيذ‬ ‫نمط‬ ‫من‬ ‫الغرض‬ ‫على‬ ‫حصولك‬ ‫بمجرد‬Statement‫استعالم‬ ‫إلرسال‬ ‫استعماله‬ ‫يمكنك‬ ‫فإنه‬SQL‫ذالك‬ ‫الطريقة‬ ‫باستخدامك‬executeQuery‫ال‬‫نمط‬ ‫من‬ ‫غرض‬ ‫لك‬ ‫ترجع‬ ‫تي‬ResultSet‫ذالك‬ ‫على‬ ‫مثال‬ ‫هذا‬. String query = "SELECT col1, col2, col3 FROM sometable"; ResultSet resultSet = statement.executeQuery(query); ‫تس‬ ‫التي‬ ‫الطرق‬ ‫تلخص‬ ‫التالية‬ ‫القائمة‬‫ت‬‫الصف‬ ‫في‬ ً‫ة‬‫عاد‬ ‫خدم‬Statement: executeQuery:‫تقوم‬ ‫الطريقة‬ ‫بهذه‬‫استعالم‬ ‫بتنفيذ‬SQL‫نمط‬ ‫من‬ ‫غرض‬ ‫في‬ ‫البيانات‬ ‫وترجع‬ ResultSet‫نمط‬ ‫من‬ ‫والغرض‬ResultSet‫يكون‬ ‫أن‬ ‫الممكن‬ ‫من‬ ‫ليس‬ ‫لكن‬ ‫فارغ‬ ‫يكون‬ ‫أي‬ ‫ممكن‬null. executeUpdate:‫الـ‬ ‫أوامر‬ ‫أجل‬ ‫من‬ ‫فقط‬ ‫الطريقة‬ ‫هذه‬ ‫تستخدم‬SQL‫هي‬ ‫التي‬UPDATE‫أو‬INSERT ‫أو‬DELETE‫ال‬ ‫عدد‬ ‫الطريقة‬ ‫هذه‬ ‫لنا‬ ‫وتعد‬‫صفوف‬‫باألمر‬ ‫تأثرت‬ ‫التي‬.‫لغة‬ ‫أوامر‬ ً‫ا‬‫أيض‬ ‫تدعم‬ ‫إنها‬ ‫كما‬ ‫البيانات‬ ‫تعريف‬(DDL)‫هي‬ ‫منها‬ ‫التي‬CREATE TABLE‫و‬DROP TABLE‫و‬ALTER TABLE. executeBatch:‫بقوم‬‫بتنفيذ‬‫أوامر‬ ‫مجموعة‬‫واحدة‬ ‫دفعة‬‫ل‬ ‫ويعيد‬‫مصفوفة‬ ‫نا‬‫عدد‬ ‫يساوي‬ ‫عنصر‬ ‫كل‬ ‫أمر‬ ‫لكل‬ ‫التعديالت‬.‫للمج‬ ‫أمر‬ ‫إلضافة‬‫م‬‫استخدم‬ ‫وعة‬addBatch. setQueryTimeout:‫النتيجة‬ ‫على‬ ‫للحصول‬ ‫للدرايفر‬ ‫الالزم‬ ‫الوقت‬ ‫مقدار‬ ‫تحدد‬ ‫أنت‬ ‫الطريقة‬ ‫بهذه‬ ‫نوع‬ ‫من‬ ‫استثناء‬ ‫الطريقة‬ ‫هذه‬ ‫وترمي‬SQLException. getMaxRows/setMaxRows:‫الصفوف‬ ‫عدد‬ ‫تحديد‬ ‫تستطيع‬ ‫الطرق‬ ‫بهذه‬‫الذي‬‫الـ‬ ‫يحتويه‬ ‫قد‬ ResultSet. ‫النتائج‬ ‫معالجة‬ ‫الطريقة‬ ‫باستخدام‬ ‫هي‬ ‫النتائج‬ ‫مع‬ ‫للتعامل‬ ‫طريقة‬ ‫أبسط‬next‫الصف‬ ‫من‬ResultSet‫وهي‬‫أجل‬ ‫من‬‫االنتقال‬ ‫مرة‬ ‫كل‬ ‫في‬ ‫البيانات‬ ‫جدول‬ ‫في‬ ‫واحد‬ ‫صف‬‫ا‬ ‫بها‬ ‫يتم‬ ‫التي‬‫الطريقة‬ ‫ستدعاء‬next. ‫الصف‬ ‫في‬ResultSet‫عن‬ ‫ذالك‬ ‫العامود‬ ‫في‬ ‫الموجودة‬ ‫البيانات‬ ‫الحصول‬ ‫أجل‬ ‫من‬ ‫مختلفة‬ ‫طرقة‬ ‫هناك‬ ‫يوجد‬ ‫هي‬ ‫والطرق‬ ‫العامود‬ ‫دليل‬ ‫أو‬ ‫العامود‬ ‫اسم‬ ‫طريق‬getXxx‫حيث‬Xxx‫الجافة‬ ‫في‬ ‫البيانات‬ ‫نوع‬ ‫هي‬‫المقابل‬‫في‬ ‫لها‬ ‫ا‬ ‫استخدام‬ ‫يتم‬ ‫المثال‬ ‫سبيل‬ ‫فعلى‬ ‫البيانات‬ ‫قواعد‬‫لطريقة‬getInt‫من‬ ‫صحيحة‬ ‫عدد‬ ‫قيمة‬ ‫على‬ ‫الحصول‬ ‫أجل‬ ‫من‬ ‫الطريقة‬ ‫استخدام‬ ‫ويتم‬ ‫الحقل‬getString‫شكل‬ ‫على‬ ‫الحقل‬ ‫قيمة‬ ‫على‬ ‫الحصول‬ ‫اجل‬ ‫من‬String‫هناك‬ ً‫ا‬‫طبع‬ ‫لـ‬ ‫الطرق‬ ‫من‬ ‫كثير‬get‫الصف‬ ‫في‬ResultSet.‫الطريقة‬getXxx‫نوع‬ ‫من‬ ‫استثناء‬ ‫ترمي‬SQLException. ‫مالحظة‬:‫الـ‬ ‫في‬ ‫األول‬ ‫العامود‬ ‫دليل‬ResultSet‫هو‬1‫وليس‬0. ‫لطباعة‬ ‫مثال‬ ‫نعرض‬ ‫اآلن‬‫قيم‬‫والث‬ ‫األول‬ ‫العامود‬‫كل‬ ‫أجل‬ ‫من‬ ‫العامود‬ ‫والدليل‬ ‫العامود‬ ‫اسم‬ ‫طريق‬ ‫عن‬ ‫اني‬ ‫الـ‬ ‫في‬ ‫الصفوف‬ResultSet: while(resultSet.next()) { System.out.println(resultSet.getString(1) + " " + resultSet.getString(2) + " " + resultSet.getString("firstname") + " " resultSet.getString("lastname")); } ‫األفضل‬ ‫من‬‫تم‬ ‫إذا‬ ‫األعمدة‬ ‫تغير‬ ‫الممكن‬ ‫من‬ ‫ألنه‬ ‫الدليل‬ ‫من‬ ‫بدل‬ ‫العامود‬ ‫لقيمة‬ ‫للوصول‬ ‫األعمدة‬ ‫اسم‬ ‫استخدام‬ ‫البيانات‬ ‫قاعدة‬ ‫في‬ ‫الجدول‬ ‫هيكلة‬ ‫تغير‬. ‫في‬JDBC 1.0‫تغ‬‫الـ‬ ‫في‬ ‫لإلمام‬ ‫التحرك‬ ‫فقط‬ ‫يمكنك‬ ‫فإنه‬ ‫ير‬ResultSet‫أنه‬ ‫حين‬ ‫في‬‫في‬JDBC 2.0‫فإنه‬ ‫الطريقة‬ ‫بوساطة‬ ‫لإلمام‬ ‫االنتقال‬ ‫يمكنك‬next‫الطريقة‬ ‫بوسط‬ ‫الوراء‬ ‫إلى‬ ‫خطوة‬ ‫والعودة‬previous‫الـ‬ ‫في‬ ResultSet‫الطريقتان‬ ‫بواسطة‬ ‫البيانات‬ ‫قاعدة‬ ‫جدول‬ ‫في‬ ‫معين‬ ‫صف‬ ‫إلى‬ ‫االنتقال‬ ‫ويمكنك‬relative‫و‬ absolute.
  • 4. ‫في‬ ‫ليس‬ ‫أنه‬ ‫تعلم‬ ‫أن‬ ‫عليك‬JDBC 1.0‫حتى‬ ‫وال‬JDBC 2.0‫الـ‬ ‫الدرايفر‬ ‫إصدار‬ ‫لتحديد‬ ‫مباشرة‬ ‫آلية‬ ‫يوجد‬JDBC ‫الـ‬ ‫في‬ ‫أما‬JDBC 3.0‫ف‬‫المشكلة‬ ‫هذه‬ ‫حل‬ ‫تم‬ ‫قد‬‫الطريقتان‬ ‫بإضافة‬ ‫وذالك‬getJDBCMajorVersion‫و‬ getJDBCMinorVersion‫الصف‬ ‫إلى‬DatabaseMetaData. ‫قائ‬ ‫هذه‬‫الصف‬ ‫في‬ ‫المفيدة‬ ‫لطرق‬ ‫ملخص‬ ‫هي‬ ‫مة‬ResultSet: next/previous:‫الطريقة‬next‫في‬ ‫مؤشر‬ ‫تحريك‬ ‫على‬ ‫تقوم‬ResultSet‫األمام‬ ‫إلى‬ ‫واحد‬ ‫صف‬ ‫الـ‬ ‫في‬ ‫اصدارات‬ ‫كل‬ ‫في‬ ‫موجودة‬ ‫الطريقة‬ ‫وهذه‬JDBC.‫الطريقة‬ ‫أما‬previous‫على‬ ‫تقوم‬ ‫فهي‬ ‫في‬ ‫المؤشر‬ ‫تحريك‬ResultSet‫الطر‬ ‫وهذه‬ ‫الخلف‬ ‫إلى‬ ‫واحد‬ ‫صف‬‫الثاني‬ ‫اإلصدار‬ ‫في‬ ‫موجودة‬ ‫يقة‬ ‫الـ‬ ‫من‬JDBC‫تليها‬ ‫التي‬ ‫واإلصدارات‬. relative/absolute:‫الطريقة‬relative‫سواء‬ ‫الصفوف‬ ‫من‬ ‫نسبي‬ ‫عدد‬ ‫المؤشر‬ ‫تحريك‬ ‫على‬ ‫تقوم‬ ‫إيجابي‬ ‫كان‬(‫لألعلى‬ ‫أي‬)‫سلبي‬ ‫أو‬(‫لألسفل‬).‫الطريقة‬ ‫أما‬absolute‫المؤشر‬ ‫تحريك‬ ‫على‬ ‫تقوم‬ ‫فهي‬ ‫معين‬ ‫الصف‬ ‫رقم‬ ‫إلى‬.‫ك‬ ‫إذا‬‫الطريقة‬ ‫قيمة‬ ‫انت‬absolute‫نهاية‬ ‫في‬ ‫سيكون‬ ‫المؤشر‬ ‫وضع‬ ‫فإن‬ ‫سلبية‬ ‫الـ‬ResultSet‫في‬ ‫مدعومة‬ ‫وهي‬JDBC 2.0. getXxx:‫هذا‬ ‫ذكرنا‬ ‫وقد‬ ‫العامود‬ ‫دليل‬ ‫أو‬ ‫العامود‬ ‫اسم‬ ‫بحسب‬ ‫ذالك‬ ‫محدد‬ ‫عامود‬ ‫من‬ ‫قيمة‬ ‫لنا‬ ‫تعيد‬ ‫الطريقة‬ ‫هذه‬ ‫لنا‬ ‫تعيد‬ ‫أن‬ ‫ويمكن‬ ‫سبق‬ ‫ما‬ ‫في‬ ‫الطريقة‬0‫أو‬null‫قي‬ ‫كانت‬ ‫إذا‬‫الـ‬ ‫مة‬SQL‫هي‬null. ‫هي‬ ‫أهمها‬ ‫من‬ ‫لكن‬ ‫طويل‬ ‫عنها‬ ‫والحديث‬ ‫المرجعة‬ ‫القيم‬ ‫من‬ ‫كثير‬ ‫الطريقة‬ ‫لهذه‬getString‫و‬ getInt‫و‬getFloat‫و‬getDouble‫الطريقة‬ ‫باستخدام‬ ‫الحقل‬ ‫مع‬ ‫ثنائية‬ ‫قناة‬ ‫فتح‬ ً‫ا‬‫أيض‬ ‫يمكنك‬ ‫و‬ getBinaryStream‫الـ‬ ‫الطرق‬ ‫من‬ ‫الكثير‬ ‫وهناك‬get‫قاعد‬ ‫من‬ ‫بيانات‬ ‫على‬ ‫للحصول‬‫البيانات‬ ‫ة‬. wasNull:‫الطريقة‬ ‫من‬ ‫قيمة‬ ‫على‬ ‫حصول‬ ‫أخر‬ ‫اختبار‬ ‫في‬ ‫تقوم‬getXxx‫الـ‬ ‫قيمة‬ ‫كان‬ ‫إذا‬ ‫فيما‬SQL ‫هي‬null‫ال‬ ‫أم‬. findColumn:‫الـ‬ ‫في‬ ‫محدد‬ ‫عامود‬ ‫دليل‬ ‫تعيد‬ResultSet‫العامود‬ ‫اسم‬ ‫معرفة‬ ‫من‬ ‫وذلك‬. getRow:‫الجدول‬ ‫في‬ ‫الحالي‬ ‫الصف‬ ‫رقم‬ ‫لك‬ ‫تعيد‬.‫ه‬ ‫صف‬ ‫أول‬ ‫دليل‬ ‫انه‬ ‫مالحظة‬‫و‬1‫وليس‬0. getMetaData:‫نمط‬ ‫من‬ ‫غرض‬ ‫الطريقة‬ ‫هذه‬ ‫لنا‬ ‫تعيد‬ResultSetMetaData‫تصف‬ ‫وهي‬ ResultSet. ResultSetMetaData‫تعطيك‬ ‫التي‬‫أعداد‬‫المعلومات‬ ‫من‬ ‫وغيرها‬ ‫واسمها‬ ‫األعمدة‬. ‫الطريقة‬getMetaDataً‫ا‬‫جد‬ ‫مفيدة‬‫نمط‬ ‫من‬ ‫يكون‬ ‫غرض‬ ‫من‬ ‫عليه‬ ‫وتحصل‬ResultSet‫هذا‬ ‫لنا‬ ‫وتعيد‬ ‫الطريق‬‫نمط‬ ‫من‬ ‫غرض‬ ‫ة‬ResultSetMetaData.‫معالجة‬ ‫بعملية‬ ‫تقوم‬ ‫أن‬ ‫أجل‬ ‫من‬ ‫أنت‬‫بشكل‬ ‫الجدول‬ ‫وهذا‬ ‫األعمدة‬ ‫ونمط‬ ‫ورقم‬ ‫اسم‬ ‫تعرف‬ ‫أن‬ ‫عليك‬ ‫فإنه‬ ‫صحيحة‬‫الصف‬ ‫دور‬ ‫هو‬ResultSetMetaData‫الذي‬ ‫الـ‬ ‫في‬ ‫األعمدة‬ ‫وأنواع‬ ‫وعدد‬ ‫اسم‬ ‫تحدد‬ ‫يتم‬ ‫خالله‬ ‫من‬ResultSet. ‫ل‬ ‫قائمة‬ ‫هي‬ ‫هذه‬‫الصف‬ ‫في‬ ‫المفيدة‬ ‫طرق‬ResultSetMetaData: getColumnCount:‫الـ‬ ‫في‬ ‫األعمدة‬ ‫أعداد‬ ‫لنا‬ ‫تعيد‬ResultSet. getColumnName:‫البيانات‬ ‫قاعدة‬ ‫من‬ ‫العامود‬ ‫اسم‬ ‫لنا‬ ‫تعيد‬.‫أول‬ ‫دليل‬ ‫انه‬ ‫مالحظة‬‫عامود‬‫هو‬1‫وليس‬0. getColumnType:‫الـ‬ ‫بيانات‬ ‫نمط‬ ‫لنا‬ ‫تعيد‬SQL‫العامود‬ ‫في‬.‫قيم‬ ‫مقارنة‬ ‫يمكن‬sql‫في‬ ‫يقابله‬ ‫بما‬ ‫ا‬‫من‬ ‫ذلك‬ ‫لجافة‬java.sql.Types. isReadOnly:‫فقط‬ ‫للقراءة‬ ‫هي‬ ‫القيم‬ ‫إدخال‬ ‫كان‬ ‫إذا‬ ‫فيما‬ ‫تشير‬. isSearchable:‫استخدام‬ ‫ممكن‬ ‫كان‬ ‫إذا‬ ‫فيما‬ ‫تشير‬‫جملة‬WHERE‫العامد‬ ‫في‬. isNullable:‫قيمة‬ ‫تخزين‬ ‫كان‬ ‫إذا‬ ‫فيما‬ ‫تشير‬null‫قانوني‬ ‫غير‬ ‫العامود‬ ‫في‬. ‫مالحظة‬:‫أن‬ResultSetMetaData‫يحو‬ ‫ال‬‫فقم‬ ‫الصفوف‬ ‫عدد‬ ‫معرفة‬ ‫أردة‬ ‫فإذا‬ ‫الصفوف‬ ‫عدد‬ ‫عن‬ ‫معلومات‬ ‫ي‬ ‫عندك‬ ‫كان‬ ‫إذا‬ ‫يلي‬ ‫بما‬JDBC 2.0‫باستدعاد‬ ‫قم‬‫الطريقة‬last‫في‬ResultSet‫إلى‬ ‫المؤشر‬ ‫تحرك‬ ‫التي‬‫أخر‬ ‫الطريقة‬ ‫باستدعاء‬ ‫قم‬ ‫وبعدها‬ ‫صف‬getRow‫عدد‬ ‫وهو‬ ‫األخير‬ ‫سيكون‬ ‫وهو‬ ‫الحالي‬ ‫الصف‬ ‫لنا‬ ‫تعيد‬ ‫عندها‬ ‫الصفوف‬.‫كان‬ ‫إذا‬ ‫أما‬‫عندك‬JDBC 1.0‫الطريقة‬ ‫خالل‬ ‫من‬ ‫هو‬ ‫اإلصدار‬ ‫هذا‬ ‫في‬ ‫الوحيدة‬ ‫الطريقة‬next‫قم‬ ‫حلقة‬ ‫في‬ ‫بوضعها‬while‫بوضع‬ ‫وقم‬‫فإذا‬ ‫عداد‬‫قيمة‬ ‫كانت‬next‫هي‬false‫صف‬ ‫أخر‬ ‫يكون‬ ‫عندها‬. ‫االتصال‬ ‫إغالق‬ ‫أجل‬ ‫من‬‫إغالق‬‫يلي‬ ‫بما‬ ‫قم‬ ‫االتصال‬: connection.close(); ‫إن‬‫من‬ ‫كل‬ ‫إغالق‬ ‫يعني‬ ‫االتصال‬ ‫إغالق‬‫الكائنين‬Statement‫و‬ResultSet. ‫متأكد‬ ‫تكون‬ ‫عندما‬ ‫االتصال‬ ‫إغالق‬ ‫عليك‬ ‫ينبغي‬ ‫إذا‬‫ب‬‫أن‬‫ك‬‫عملية‬ ‫بأي‬ ‫تقوم‬ ‫لن‬‫معالجة‬‫أ‬‫و‬‫بيانات‬ ‫استعالم‬.
  • 5. ‫بيانات‬ ‫قاعدة‬ ‫مع‬ ‫اتصال‬ ‫مثال‬MySQL ‫من‬ ‫كل‬ ‫نستخدم‬ ‫سوف‬ ‫المثال‬ ‫هذا‬ ‫في‬select‫و‬insert‫إضافة‬ ‫عن‬ ‫عبارة‬ ‫هو‬ ‫والمثال‬‫منشور‬‫الفيس‬ ‫في‬ ‫كما‬ ‫بوك‬‫أخر‬ ‫أن‬ ‫مبسط‬ ‫بشكل‬ ‫لكن‬‫منشور‬‫أول‬ ‫سيكون‬ ‫أضيفه‬‫منشور‬‫يظهر‬.‫اسمها‬ ‫ولتكن‬ ‫البيانات‬ ‫قاعدة‬ ‫ننشئ‬ ‫اآلن‬ test‫اسمه‬ ‫جدول‬ ‫وننشئ‬post‫رقم‬ ‫األول‬ ‫عامودان‬ ‫يتضمن‬‫المنشور‬id_post‫محتوى‬ ‫والثاني‬‫المنشور‬ p_content. ‫الـ‬ ‫تعليمات‬SQL‫العملية‬ ‫هذه‬ ‫أجل‬ ‫من‬ CREATE DATABASE `test1` ; CREATE TABLE `test1`.`post` (`id_post` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,`p_content` TEXT NOT NULL) ENGINE = InnoDB; ‫مكان‬ ‫يظهر‬ ‫األول‬ ‫سيرفلتان‬ ‫ننشئ‬ ‫بعدها‬‫إدخال‬‫المنشور‬‫اإلضافة‬ ‫وزر‬‫المنشور‬‫يكون‬ ‫الزر‬ ‫من‬ ‫األسفل‬ ‫وفي‬ ‫موجود‬‫المنشورات‬‫الضغط‬ ‫عند‬‫بحشر‬ ‫يقوم‬ ‫الذي‬ ‫الثاني‬ ‫سرفلت‬ ‫إلى‬ ‫ينقلنا‬ ‫الزر‬ ‫على‬‫المنشور‬‫البيانات‬ ‫قاعدة‬ ‫في‬ ‫األول‬ ‫السرفلت‬ ‫إلى‬ ‫بتوجيهك‬ ‫ويقم‬. ‫واسمه‬ ‫األول‬ ‫السرفلت‬ ‫اآلن‬ShowPost import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class ShowPost extends HttpServlet { void processRequest (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException { response.setContentType("text/html;charset=UTF-8"); try {Class.forName("com.mysql.jdbc.Driver").newInstance();//1 } catch (Exception ex) {//1 throw new SecurityException("class not found. " + ex.toString());//1 }//1 String hostName = "localhost:3306";//2 String dbName = "test1";//2 String MySqlURL = "jdbc:mysql://"+hostName+"/"+dbName;//2 String user = "root";//3 String password = "";//3 Connection connection = DriverManager.getConnection(MySqlURL, user, password);//3 Statement statement = connection.createStatement();//4 String query = "SELECT * FROM `post` ORDER BY `post`.`id_post` DESC";//5 ResultSet resultSet = statement.executeQuery(query);//5 PrintWriter out = response.getWriter(); try { out.println("<html><head><title>Servlet ShowPost</title></head>"); out.println("<body> "); out.println("<form action="http://localhost:8085/CreatePost/InsertPost" method="post">" +"<textarea name="post" ></textarea><br/>" +"<input type="submit" value="post"/>" +"</form>"); while(resultSet.next()) //6 { out.println(resultSet.getString(2)+"<hr/>"); //6 } out.println("</body></html>"); } finally { out.close(); } connection.close();//7 }//end processRequest
  • 6. ‫تتمة‬ShowPost ‫واسمه‬ ‫الثاني‬ ‫السرفلت‬ ‫اآلن‬InsertPost ‫بمشروع‬ ‫القيام‬ ‫تريد‬ ‫عندما‬ ‫نصائح‬‫البيانات‬ ‫بقواعد‬ ‫اتصال‬ ‫فيه‬‫بص‬ ‫قم‬‫مساعد‬ ‫صف‬ ‫نع‬‫بإنشاء‬ ‫وقم‬ ‫االتصال‬ ‫إلنشاء‬ ‫عميل‬ ‫عليك‬ ‫تسهل‬ ‫بحيث‬ ‫إليها‬ ‫بحاجة‬ ‫أنت‬ ‫التي‬ ‫العمليات‬ ‫من‬ ‫وغيرها‬ ‫واستعالم‬ ‫والحذف‬ ‫والحشر‬ ‫لتعديل‬ ‫طرق‬ ‫عليه‬ ‫والسيطرة‬ ‫البرنامج‬ ‫وتعديل‬ ‫البرمجة‬ ‫التدريب‬ ‫اجل‬ ‫من‬ ‫واجبات‬ 1.‫فكرة‬ ‫بتطوير‬ ‫قم‬‫المنشورات‬‫لكل‬ ‫تعليق‬ ‫بوضع‬ ‫وقم‬‫منشور‬ 2.‫ال‬ ‫بتطوير‬ ‫قم‬‫عملية‬ ‫بوضع‬ ‫وقم‬ ‫السابقة‬ ‫فكرة‬‫اإلعجاب‬‫المنشور‬ ‫و‬ ‫التعليق‬ ‫من‬ ‫لكل‬ 3.‫بساعة‬ ‫تصويته‬ ‫بعد‬ ‫التصويت‬ ‫يستطيع‬ ‫الشخص‬ ‫وأجعل‬ ‫الموقع‬ ‫تقيم‬ ‫لعملية‬ ‫مشابه‬ ‫شيء‬ ‫أنشاء‬ ‫قم‬ 4.‫صفحة‬ ‫تطبيق‬ ‫بإنشاء‬ ‫قم‬index‫واالسم‬ ‫رقم‬ ‫ويتضمن‬ ‫الطالب‬ ‫لتسجل‬ ‫األول‬ ‫رابطين‬ ‫لك‬ ‫تعرض‬‫و‬ ‫االختصاص‬‫والصف‬‫الهواية‬‫لكل‬ ‫زران‬ ‫هناك‬ ‫العرض‬ ‫وفي‬ ‫المسجلين‬ ‫عرض‬ ‫الثاني‬ ‫والرابط‬‫طالب‬ ‫بياناته‬ ‫لتعديل‬ ‫والثاني‬ ‫الطالب‬ ‫لحذف‬ ‫األول‬ import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class InsertPost extends HttpServlet { void processRequest (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException { String post=request.getParameter("post"); response.setContentType("text/html;charset=UTF-8"); try {Class.forName("com.mysql.jdbc.Driver").newInstance();//1 } catch (Exception ex) {//1 throw new SecurityException("class not found. " + ex.toString());//1 }//1 String hostName = "localhost:3306";//2 String dbName = "test1";//2 String MySqlURL = "jdbc:mysql://"+hostName+"/"+dbName;//2 String user = "root";//3 String password = "";//3 Connection connection = DriverManager.getConnection(MySqlURL, user, password);//3 Statement statement = connection.createStatement();//4 String query = "INSERT INTO `test1`.`post` ( `id_post` , `p_content` ) VALUES ( NULL , '"+post+"' );";//5 int resultSet = statement.executeUpdate(query);//5 connection.close();//7 response.sendRedirect("http://localhost:8085/CreatePost/ShowPost"); }//end processRequest protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { processRequest(request, response); } catch (SQLException ex) {} }//end doPost } end servlet protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { processRequest(request, response); } catch (SQLException ex) {} }//end doGet }//end servlet