الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

تحديث سجلات قاعدة بيانات اوراكل عن طريق JSP

Featured Replies

بتاريخ:

عند تعلم لغة جديدة ليست بالطريقة الصحيحة ان تحفظ اوامرها و قواعدها اللغوية و تقضي الساعات تقرأ في مراجعها وكتبها .
قيمة المبرمج والمطور في مكتبته الخاصه واقصد بها الاكواد والروتينات التي يحتفظ بها والتي هي ناتج خبرته البرمجية وخبرات اخرين .
فانت كمتعلم جديد للغة جديدة كل ماعليك هو تشغيل ابسط برامجها وعمل تعديلات طفيفه حتى تعرف فائدة كل ايعاد او جمله فيها .
اما في حالة الرغبة الجادة لاتقان لغة فلايتم ذلك الا عن طريق البدأ في مشروع كبير محلل مُسبقاً او عمل محاكاة لبرنامج موجود اصلا
وفي طريق بناءه ستتعرف على ادق تفاصيل هذه اللغة فيما يخص بالغرض الذي صممت البرنامج لاجله .

والان نعود الى اكمال ما بدأنا به وهو طريقة تحديث البيانات في قاعدة اوراكل عن طريق لغة JSP .
عملية تحديث البيانات من خلال لغة JSP او اي لغة ويب اخرى مثل PHP, Coldfusion, ASP لها نفس المباديء ولا تختلف الى في اشياء بسيطة جداً
قد نتحدث عنها في سياق الحديث عن بعض الاوامر في لغة JSP .
كما رأينا في السابق واعني في الموضوع عرض البيانات باستخدام JSP كيفية عرض البيانات على الشاشة على هيئة تقرير غير قابل للتعديل
هنا نحن في حاجة الى امكانية التعديل ومن ثم ارسالها الى قاعدة البيانات واستبدال القيمة السابقه بالقيمة الجديدة .
تمر هذه العملية بعدة مراحل اوجزها في مايلي :
1 - عرض البيانات لاختيار السجل الذي نرغب في تحديث بياناته .
2 - تمرير متغير يحتوي على معرف السجل واقصد هنا الـPK ( Primary Key ) الى الصفحة المسؤولة عن عرض السجل لتحديث بياناته
3 - بعد عرض البيانات داخل حاويات Text Boxes والتعديل عليها نقوم بإرسال قيمها عن طريق Form الى الصفحة المسؤولة عن التحديث داخل قاعدة البيانات .

اوردت هنا مثال للتعامل مع قواعد بيانات اوركل خصيصاً حيث ان معظم الامثلة التي توردها الكتب العامة في تعليم JSP لا تعمل بشكل صحيح
فمثلاً اذا استخدمنا جملة الـSQL في تحديث البيانات مباشرة فعند وجود علامة تنصيص في القيمة المرسله سيحدث هناك خطأ .
ولذلك نحن بحاجة هنا لا ستخدام الـClass المسمى بـ PreparedStatement بدلاً من Statement العادية .
هذه المعلومة مهمة جداً فلا تنسوها ! .

والان قم بحفظ هذا الملف تحت اسم listforedit.jsp وهو مشابه تماماً للملف السابق في موضوع عرض البيانات مع JSP ماعدا اضافة رابط
يمكن من ارسال قيمة متغير تحوي على معرف السجل الى الصفحة edit.jsp عن طريق GET
والفرق بين GET و POST في ارسال البيانات ان الاولى تستخدم اذا كان حجم قيم المتغيرات صغيراً وليست سرية فهو يعرضها في شريط عنوان
المتصفح الخاص بك كالتالي : http://localhost:8080/edit.jsp?id=10
ليتم تلقيه عن طريق الايعاز request.getParameter("id") و لاحظ الاختلاف في حالة التعامل مع البيانات الحرفية والعددية .
اما Post فيستخدم للبيانات السرية والكبيرة ويتم ارسالها ضمنياً بدون ان ترى شيئاً في شريط عنوان المتصفح .
لاحظ ان GET وPost هي من صلب لغة HTML وليست JSP .


listforedit.jsp

<%@ page contentType="text/html; charset=windows-1256" language="java" import="java.sql.*" errorPage="" %>
<%
Driver Driverrs = (Driver)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection Connrs = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
PreparedStatement Statementrs = Connrs.prepareStatement("SELECT * FROM DEPT");

ResultSet rs = Statementrs.executeQuery();
%>
<html>
<head>
<title>Show Dept. Table</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
</head>

<body>
<table width="600" border="0" align="center" cellpadding="0" cellspacing="5">
 <tr bgcolor="#000000"> 
   <td><font color="#FFFFFF" size="2" face="Tahoma">Dep. No.</font></td>
   <td><font color="#FFFFFF" size="2" face="Tahoma">Dep. Name </font></td>
   <td><font color="#FFFFFF" size="2" face="Tahoma">Loc.</font></td>
 </tr>
 <%
 while (rs.next())
 {
 %>

 <tr bgcolor="efefef"> 
   <td><font size="2" face="Tahoma"><%=rs.getInt("DEPTNO")%></font></td>
   <td><font size="2" face="Tahoma"><a href="edit.jsp?id=<%=rs.getInt("DEPTNO")%>"><%=rs.getString("DNAME")%></a></font></td>
<!--
تمت اضافة رابط يقوم بنقل المتغير الذي يحوي قيمة معرف القسم
-->
   <td><font size="2" face="Tahoma"><%=rs.getString("LOC")%></font></td>
 </tr>
 <%
 } 
 %>
</table>
</body>
</html>
<%
rs.close();
Statementrs.close();
Connrs.close();
%>




احفظ هذا الملف تحت اسم edit.jsp ولاتنسى ان Jsp حساسه لحالة الحروف من حيث كونه Capital Case او Small Case
فـ Edit.jsp لايشير الى edit.jsp وستظهر لك رسالة خطأ بعدم وجود هذا الملف .

edit.jsp

<%@ page contentType="text/html; charset=windows-1256" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<title>Edit Department</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
</head>

<body>
<%
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM DEPT where DEPTNO =" + Integer.parseInt(request.getParameter("id")));
%>
<form name="updteform" method="POST">
<table width="80%" align="center" cellspacing="5">
   <tr valign="top" bgcolor="#000000"> 
     <td width="95"><font color="#FFFFFF" size="2" face="Tahoma">DEPT. No. </font></td>
     <td width="197"><font color="#FFFFFF" size="2" face="Tahoma">Dept. Name </font></td>
     <td width="305"><font color="#FFFFFF" size="2" face="Tahoma">Loc</font></td>
   </tr>
   <%
if(rs.next())
{
%>
   <tr valign="top"> 
     <td bgcolor="#efefef">
       <input name="txt_DEPTNO" type="hidden" id="txt_DEPTNO" value="<%=rs.getInt("DEPTNO")%>"><%=rs.getInt("DEPTNO")%></td>
     <td bgcolor="#efefef"><input name="txt_DNAME" type="text" id="txt_DNAME" value="<%=rs.getString("DNAME")%>" size="30""> 
     </td>
     <td bgcolor="#efefef"><input name="txt_LOC" type="text" id="txt_LOC" value="<%=rs.getString("LOC")%>" size="30"> 
     </td>
   </tr>
   <%
}
%>
   <tr valign="top"> 
     <td colspan="3">
  <input type="submit" name="Submit" value="Update">
  <input type="button" value="Back" onClick="javascript:history.back();">
     </td>
   </tr>
 </table>
</form>
</body>
</html>
<%
rs.close();
stmt.close();
con.close();
%>
<%
// Update هنا يبدأ الجزء الخاص بتحديث البيانات في حالة ضغط المستخدم على الزر
if (request.getParameter("Submit") != null)
{
String txt_DNAME = request.getParameter("txt_DNAME");
String txt_LOC = request.getParameter("txt_LOC");
int txt_DEPTNO = Integer.parseInt(request.getParameter("txt_DEPTNO"));
String updSql = "UPDATE DEPT SET DNAME = ? , LOC = ? WHERE DEPTNO = " + txt_DEPTNO;
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con2 = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
PreparedStatement ps = con2.prepareStatement(updSql);
synchronized(ps){
ps.setString(1,txt_DNAME);
ps.setString(2,txt_LOC);
ps.executeUpdate();
response.sendRedirect("listforedit.jsp");
}}
%>



وهذا على ان نلتقي في موضوع اخر ربما يكون عن طريقة حذف البيانات او اضافتها حسب الوقت :)

قُدماً ...
احمد الجابري

بتاريخ:

سلام عليكم

ألف شكر على الشرح الممتاز ... فعلاً تميز جديد في قسم الجافا

أخوك عادل

بتاريخ:

الاخ احمد ,

تعجز الكلمات عن الشكر ,
بارك الله فيك وجعله في ميزان حسناتك يوم القيامة .

:)

بتاريخ:

مشكور اخوي على احمد ويعطيك ربي الف عافية
طيب مشكلة اللغة العربية في الاستعلام تظهر سليمة لكن في الادخال او التحديث تظهر بشكل رموز
مع العلم انه تم استخدام
request.setCharacterEncoding("windows-1256");
response.setContentType("text/html; charset=utf-8");

ارجو اجد الاجابة
شكر لك

بتاريخ:
  • كاتب الموضوع

اخي الكريم سامي عبدالله
اذا كنت تستخدم نفس امثلتي التي اوردتها ماعليك الا اضافة السطر التالي في الملف edit.jsp
بعد اول سطر مباشرة
وهو :

<%@ page contentType="text/html; charset=windows-1256" language="java" import="java.sql.*" errorPage="" %>
<%
request.setCharacterEncoding("windows-1256");
%>



هذا كل ماتحتاجه وقد جربته في تحديث بيانات الجدول DEPT الخاص بـSCOTT وهو يعمل بشكل صحيح .

ارجوا إعلامي بما يستجد لديك ..

قُدماً
احمد الجابري

بتاريخ:

شكر لك اخي الغالي احمد على تجاوبك السريع
لم تنجح المحاولة أتوقع المشكلة في قاعدة البيانات.

بتاريخ:
  • كاتب الموضوع

تأكد من تحديث القيم في الـRegistry

1- اذهب الى Start ثم Run ثم اكتب regedit وبعدها اضغط على OK
2- الان بعد ان فتحت نافذة برنامج Registry Editor اذهب الى
HKEY_LOCAL_MACHINE ثم اختر SOFTWARE
ثم ORACLE وبعدها HOME0
3- ابحث عن المتغير NLS_LANG واضغط عليه مرتين لتغيير قيمته
ثم ضع هذه القيمة في الخانه الخاصة ببيانات القيمة

ARABIC_UNITED ARAB EMIRATES.AR8MSWIN1256



اعد تشغيل قاعدة البيانات او تشغيل الجهاز ككل وحاول مره اخرى .

قُدماً ...

احمد الجابري

بتاريخ:

مشكور على الدرس

  • بعد 4 أسابيع...
بتاريخ:

متميز دائماً والى الامام

بتاريخ:

اخي الكريم
هل ال JSP برنامج متثل ال دي فبوبر ؟
واذا كان برنامج كيف انزلة علي المكنة بتعتي ؟
وما الفرق بين JSP و ASP ?
ارجو الرد سريعا

بتاريخ:
  • كاتب الموضوع

اسف على التأخير اخي gadallah

هل ال JSP برنامج متثل ال ديفيلوبر ؟
لا طبعاً JSP عبارة عن لغة متكاملة يعني كل ماتحتاج للبدأ بها هو web server يدعمها مثل JRUN او Apache
وتستطيع كتابة برامجك عن طريق برنامج notepad .
لكن لايمكنك تطوير برنامج PL/SQL بدون برنامج developer .

واذا كان برنامج كيف انزلة علي المكنة بتعتي ؟
وبالنسبة لتنزيله على المكنة بتعتك هناك موضوع مستقل مثبت اسمه كل ماتحتاجه لربط اوراكل و JSP

وما الفرق بين JSP و ASP ?
من ناحية الهيكلة تقريباً نفس الشيء لكن الفرق ان ASP تعمل على webserver من نوع IIS والذي يوجد على انظمة ويندوز فقط وهي مشتقة من لغة Visual Basic. اما JSP فهي مشتقة من لغة جافا وتحتاج الى webserver من نوع Apache وهناك انواع اخرى تدعم اللغة ويمكن تشغيلها على نظام ويندوز وغيره بدون الحاجة الى تغيير حرف واحد في الكود .

اسف ان الرد لم يكن سريعاً .. لاني صراحة ماانتبهت .

قُدماً .. احمد الجابري

  • بعد 2 شهور...
بتاريخ:

يسلام على لعبك يابو حميد :lol: ;)

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.