الانتقال إلى المحتوى
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.

مشكلة التعديل داخل قواعد البيانات

Featured Replies

بتاريخ:

السلام عليكم ورحمةا لله وبركاته

اقوم بعمل برنامج بالجافا  لتشفير البيانات حيث يتم ادخال المفتاح والتكست المراد تشفيره ثم بعد ذلك اعمل كونكات للمتغيرين مع بعض والناتج يمر على اكثر من عملية لنحصل فى النهايه على قيمه مشفره.

 حاولت اطبق البرنامج دا على جدول لتشفير احد  الاعمده  ولكن المشكله تاتى عند عمل الابديت حيث يقوم بعمل ابديل للقيم بداخل العمود باخر قيمة مشفره فى العمود كما هو موضح فى الكود

 

public class  dbconnection {
java.sql.Connection con;
     java.sql.Statement st;
     ResultSet rs;
 
public   EncBean getConnection()throws SQLException{
 
    EncBean encBean1 = new EncBean(); 
String v_url= "jdbc:oracle:thin:@192.168.2.138:1522:orcl2";
    String v_username= "scott";
    String v_password = "tiger";
 
    try
    {
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
   //  Class.forName("oracle.jdbc.driver.OracleDriver");
    con = DriverManager.getConnection(v_url,v_username,v_password); 
    System.out.println ("Connection to Oracle database  was Established");
    }
   
         catch ( SQLException e) 
        {
         e.printStackTrace();
        }
       return encBean1;
}
       
        
    public   EncBean selectRows()
   
    {
    EncBean encBean2 = new EncBean(); 
    try
    {
   
    String SQLselect="select JOB_NAME from job";
    st=con.createStatement();
    rs=st.executeQuery(SQLselect);
       
    while (rs.next()) {
   
       encBean2.setName(rs.getString("JOB_NAME"));
                  }
        
    }
catch ( Exception ex ) 
        {
       ex.printStackTrace();
        }
        
return encBean2;
       }
      ////////////////////////////////////////////////////////////////////////////
 
public class EncBean {
private String name;
private String ReversedBinary;
    private String ConcatenatedData;
 
public String getReversedBinary() {
return ReversedBinary;
}
public void setReversedBinary(String ReversedBinary) {
this.ReversedBinary = ReversedBinary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
 
public String getConcatenatedData() {
return ConcatenatedData;
}
public void setConcatenatedData(String ConcatenatedData) {
this.ConcatenatedData = ConcatenatedData;
}}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
public class  enc {
public EncBean funconcat( String vfield)
{
    EncBean encBeanconcat = new EncBean();
    Scanner in = new Scanner(System.in);
    System.out.println("Enter Your KeyText ");
    String inputkey = in.nextLine();
    encBeanconcat.setConcatenatedData(inputkey.concat(vfield));
     System.out.println("concatenated data is: "+encBeanconcat.getConcatenatedData());
    return encBeanconcat;
}
 
 public EncBean inputencryption(String Concatenatedinputs){
  EncBean encBean5 = new EncBean();
   code......
   return encBean5;
}
public static String convertBinaryStringToString(String string){
 
code .......
  }}
  
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
public  void updateRows(String updatedname){
  
try
{
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
 
ResultSet srs = stmt.executeQuery("select job_name from job " );
 
         while (srs.next()) {
     
srs.updateString("job_name", updatedname);
srs.updateRow();
con.commit();
}
System.out.println("An existing user was updated successfully!");
}
catch(SQLException err){
System.out.println(err.getMessage());
}}
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 public class mainenc {

 
   public static void main(String[] args) throws Exception{
   dbconnection dbcon = new dbconnection();
    EncBean encbeancon= dbcon.getConnection();
   EncBean encBean5 = dbcon.selectRows(); 
   enc concatinputs = new enc();
   EncBean encBeanconcat = concatinputs.funconcat(encBean5.getName());
   EncBean encBean4 = concatinputs.inputencryption(encBeanconcat.getConcatenatedData());
   String vReserverbin= encBean4.getReversedBinary();
   String  ascistring= concatinputs.convertBinaryStringToString(vReserverbin);
       dbcon.updateRows(ascistring); 
بتاريخ:

لا بد من وضع كود التحديث داخل الـ loop وليس خارجها

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

لا بد من وضع كود التحديث داخل الـ loop وليس خارجها

استسمحك ان تقوم بتعديلها

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

 

لا بد من وضع كود التحديث داخل الـ loop وليس خارجها

استسمحك ان تقوم بتعديلها لانى جربت طرق مختلفه ولم تصلح معى

 

بتاريخ:

أول ما يتبادر الى الذهن أن السبب هو عدم وضع كود التحديث داخل loop  لكن عند تتبع الكود نجد أن كود التحديث هو داخل الـ loop من الأساس


  while (srs.next())
 {  
srs.updateString("job_name", updatedname);
srs.updateRow();
con.commit();
 }

بغض النظر عن باقي الكود جربي كود التحيث لوحده كما فعلت أنا وجدت أنه يعمل تحديث على كافة الصفوف وليس الصف الأخير فقط  لأنه ضمن loop 

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

كما ذكرت أخذت كود التحديث جربته لوحده يعمل تحديث لكافة الصفوف وليس للصف واحد أو الصف الأخير 

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

أول ما يتبادر الى الذهن أن السبب هو عدم وضع كود التحديث داخل loop  لكن عند تتبع الكود نجد أن كود التحديث هو داخل الـ loop من الأساس


  while (srs.next())
 {  
srs.updateString("job_name", updatedname);
srs.updateRow();
con.commit();
 }

بغض النظر عن باقي الكود جربي كود التحيث لوحده كما فعلت أنا وجدت أنه يعمل تحديث على كافة الصفوف وليس الصف الأخير فقط  لأنه ضمن loop 

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

كما ذكرت أخذت كود التحديث جربته لوحده يعمل تحديث لكافة الصفوف وليس للصف واحد أو الصف 

 

 

حضرتك الكود موجود بالكامل باستثناء دالتين انا وضعت اهيكل بتاعها فقط 

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

 

أول ما يتبادر الى الذهن أن السبب هو عدم وضع كود التحديث داخل loop  لكن عند تتبع الكود نجد أن كود التحديث هو داخل الـ loop من الأساس


  while (srs.next())
 {  
srs.updateString("job_name", updatedname);
srs.updateRow();
con.commit();
 }

بغض النظر عن باقي الكود جربي كود التحيث لوحده كما فعلت أنا وجدت أنه يعمل تحديث على كافة الصفوف وليس الصف الأخير فقط  لأنه ضمن loop 

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

كما ذكرت أخذت كود التحديث جربته لوحده يعمل تحديث لكافة الصفوف وليس للصف واحد أو الصف 

 

 

حضرتك الكود موجود بالكامل باستثناء دالتين انا وضعت الهيكل فقط

 وعموما الكلاس بالكامل كالاتى :

 

 

public class  enc {
 
 
public EncBean funconcat( String vfield)
{
    EncBean encBeanconcat = new EncBean();
    Scanner in = new Scanner(System.in);
    System.out.println("Enter Your KeyText ");
    String inputkey = in.nextLine();
    //vfield=encBeanconcat.getName();
    encBeanconcat.setConcatenatedData(inputkey.concat(vfield));
     System.out.println("concatenated data is: "+encBeanconcat.getConcatenatedData());
    return encBeanconcat;
}
 
 public EncBean inputencryption(String Concatenatedinputs){
  EncBean encBean5 = new EncBean();
 
byte[] asciiText = null;
     try {
   
          asciiText = Concatenatedinputs.getBytes("US-ASCII");
        //System.out.println(Arrays.toString(asciiText));
       }
        
   catch (java.io.UnsupportedEncodingException e)
  { e.printStackTrace(); }
 
        String binary ="";
 
   for (byte b : asciiText) {
   binary += Integer.toBinaryString(0x100 + (int) (b & 0xFF)).substring(1);}
   System.out.println("Requested binary  :" +binary); 
    encBean5.setReversedBinary(binary.replace('0', '2').replace('1', '0').replace('2', '1'));
   System.out.println("Reveresd  binary  :" +  encBean5.getReversedBinary());
   return encBean5;
}
public static String convertBinaryStringToString(String string){
   StringBuilder sb = new StringBuilder();
   char[] chars = string.toCharArray();
   String ss="";
   String ll="";
    //for each character
    for (int j = 0; j < chars.length; j+=8) {
        int idx = 0;
       int sum =0;
        //for each bit in reverse
        for (int i = 7; i>= 0; i--) {
            if (chars[i+j] == '1') {
                sum += 1 << idx;}
                     idx++;}                      
     //    System.out.println(sum); //debug
         int div=sum/4;
       //  System.out.println(div);
         //System.out.println((char)div);
         int rem=sum%4;
         // System.out.println(rem);
         ss=(char)div+""+rem;
         ll+=ss;}
         System.out.println(ll);
         return ll;} 
         
          }
 
بتاريخ:
  • كاتب الموضوع

كلاس الكونكشن كامل

public class  dbconnection {
java.sql.Connection con;
     java.sql.Statement st;
     ResultSet rs;
 
public   EncBean getConnection()throws SQLException{
 
    EncBean encBean1 = new EncBean(); 
String v_url= "jdbc:oracle:thin:@192.168.2.138:1522:orcl2";
    String v_username= "scott";
    String v_password = "tiger";
 
    try
    {
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
   //  Class.forName("oracle.jdbc.driver.OracleDriver");
    con = DriverManager.getConnection(v_url,v_username,v_password); 
    System.out.println ("Connection to Oracle database  was Established");
    }
   
   
     catch ( SQLException e) 
        {
         e.printStackTrace();
        }
       return encBean1;
}
       
        
        
    public   EncBean selectRows()
   
    {
    EncBean encBean2 = new EncBean(); 
    try
    {
   
    String SQLselect="select JOB_NAME from job";
    st=con.createStatement();
    rs=st.executeQuery(SQLselect);
       
    while (rs.next()) {
   
       encBean2.setName(rs.getString("JOB_NAME"));
                  }
        
    }
catch ( Exception ex ) 
        {
       ex.printStackTrace();
        }
        
return encBean2;
       }
       
       
       
public  void updateRows(String updatedname){
  
try
{
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
 
ResultSet srs = stmt.executeQuery("select job_name from job " );
 
         while (srs.next()) {
     
srs.updateString("job_name", updatedname);
srs.updateRow();
con.commit();
}
System.out.println("An existing user was updated successfully!");
}
catch(SQLException err){
System.out.println(err.getMessage());
}
       
       
}
 
}
بتاريخ:

يا أخت سامية

أنا لم أقل أن الـ connection  فيه خطأ  ولا كود التحديث فيه خطأ

أنا قلت يوجد شيء خطأ وليس سببها وضع كود التحديث ضمن الـ loop ربما أثناء الإستدعاء تقديم شيء على شيء آخر ولهذا طلبت أن ترفعي لي الكود بشكل كامل 

وليس كل مرة جزء يفتقد الى جزء آخر 

 

من الكود أعلاه يتبين أن لديك Two Class قولي هذا الـ class  الأول 

وهذا الـ class الثاني الذي يحتوي على main 

 

ضعيهم بشكل منظم  بمشاركتين منفصلتين كل class  بمشاركة منفصلة 

 

وأكون شاكرة وممتنة إذا إستخدمت من المحرر الذي تكتبين فيه المشاركة إستخدمي الرمز <>  إضغطي عليه عندما تريدين كتابة الكود  حتى الكود يكون واضح 

وإن شاء الله نستطيع المساعدة ويتضح الموضوع 

إذا صعب على حضرتك الموضوع أرفعي كل class  بملف text 

أهم شيء الكود مكتمل 

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

يا أخت سامية

أنا لم أقل أن الـ connection  فيه خطأ  ولا كود التحديث فيه خطأ

أنا قلت يوجد شيء خطأ وليس سببها وضع كود التحديث ضمن الـ loop ربما أثناء الإستدعاء تقديم شيء على شيء آخر ولهذا طلبت أن ترفعي لي الكود بشكل كامل 

وليس كل مرة جزء يفتقد الى جزء آخر 

 

من الكود أعلاه يتبين أن لديك Two Class قولي هذا الـ class  الأول 

وهذا الـ class الثاني الذي يحتوي على main 

 

ضعيهم بشكل منظم  بمشاركتين منفصلتين كل class  بمشاركة منفصلة 

 

وأكون شاكرة وممتنة إذا إستخدمت من المحرر الذي تكتبين فيه المشاركة إستخدمي الرمز <>  إضغطي عليه عندما تريدين كتابة الكود  حتى الكود يكون واضح 

وإن شاء الله نستطيع المساعدة ويتضح الموضوع 

إذا صعب على حضرتك الموضوع أرفعي كل class  بملف text 

أهم شيء الكود مكتمل 

 

 

أشكرك أختى الغالية على جهودك معى 

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

مرفق ملف مضغوط به اربع كلاسات 

1- main

2- enc 

3- bean

4- connection

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

 

مرفق ملف مضغوط به اربع كلاسات 

1- main

2- enc 

3- bean

4- connection

 

PRO.rar

بتاريخ:

أفضل شئ هو تشغيل البرنامج في حالة debug وهذا يسهل معرفة المشكلة

بتاريخ:

يا أخت سامية 

حضرتك تدخلين الـkey  الذي على أساسه يعمل تشفير أم هي خوارزمية تشفير من ضمنها لإن أكثر من مرة جربت يقفل البرنامج ولا يحدث أي إستجابة 

سواء عند عملية الـ run أو أو عند الـ Debug  نفس المشكلة يقف و لايحدث شيء ويطلب غلق البرنامج 

قومي بعمل Debug  لديك وأخبرينا النتيجة 

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

أشكرك أختى ميسم الكرام على ها الاهتمام

حضرتك انا برن البرنامج عادى وهذا هو الخرج

--------------------Configuration: mainenc - JDK version 1.8.0_40 <Default> - <Default>--------------------
Connection to Oracle database  was Established
Enter Your KeyText 
123
concatenated data is: 123Manager
Requested binary  :00110001001100100011001101001101011000010110111001100001011001110110010101110010
Reveresd  binary  :11001110110011011100110010110010100111101001000110011110100110001001101010001101
323130,2'2$1'2&0&2#1 
An existing user was updated successfully!
Hello World!
 
Process completed.
 
 
323130,2'2$1'2&0&2#1هذه هى القيمه المشفره والتى يتم بها تشفير كافة البيانات

post-13250-0-66285600-1449142707_thumb.png

تم تعديل بواسطة ساميه محى سرور

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

أشكرك أختى ميسم الكرام على ها الاهتمام

حضرتك انا برن البرنامج عادى ودى سكرين شوت منها 

<--------------------Configuration: mainenc - JDK version 1.8.0_40 <Default> - <Default>--------------------

Connection to Oracle database  was Established
Enter Your KeyText 
123
concatenated data is: 123Manager
Requested binary  :00110001001100100011001101001101011000010110111001100001011001110110010101110010
Reveresd  binary  :11001110110011011100110010110010100111101001000110011110100110001001101010001101
323130,2'2$1'2&0&2#1
An existing user was updated successfully!
Hello World!
 
Process completed.
 

>

بتاريخ:

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

حسناً هل تقومين بإعطاء قيمة الـ Key ؟ 

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

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

حسناً هل تقومين بإعطاء قيمة الـ Key ؟ 

نعم عند الرن تايم اعطيه مثلا 123

بتاريخ:

للأسف هو يتوقف وليس هنالك أي response  ..أعتقد ربما حدث خطأ في إرسال الملفات هل هذه النسخة التي تعملين عليها 

ربما تعملين على نسخة محدثة غير التي لدي ربما هذا محتمل حدث خلط عند الإرسال 

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

للأسف هو يتوقف وليس هنالك أي response  ..أعتقد ربما حدث خطأ في إرسال الملفات هل هذه النسخة التي تعملين عليها 

ربما تعملين على نسخة محدثة غير التي لدي ربما هذا محتمل حدث خلط عند الإرسال 

ايوه نفس النسخه اعمل بها ولكنى اعمل على جى كريتور

طيب غيرتى اى بى (ip) 

بتاريخ:

غيرت الـ ip  وغيرت مايلزم من جدول واسم المستخدم وكلمة المرور وحسبت بالحسبان انه حضرتك تعملين على بيئة مختلفة لذلك إستخدمت بالادخال الرمز التالي 

        String inputKey = JOptionPane.showInputDialog("Enter Your KeyText") ;
       // System.out.println("Enter Your KeyText ");

لكن بصراحة أول بداية بالتنفيذ يتوقف كل شيء 

أنا سبق وذكرت إني جربت كود التحديث بشكل منفصل عن باقي كود التشفير وجدته يعمل بشكل صحيح  و التحديث يتم على كل الصفوف يعني كود التحديث لا توجد فيه أي مشكلة 

وكود الإتصال لا يوجد فيه أي مشاكل 

وبما أنه كود التشفير يعمل لديك 

إذن كـ method , class كلها تعمل بشكل صحيح بقي تأكدي من الإستدعاء في main 

والله الموفق 

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

هل يوجد فرق بين الجملتين فى الاتصال 

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
 
and
 
Class.forName("oracle.jdbc.driver.OracleDriver");
 لان احد  الاصدقاء نصحنى باستخدام  Class.forName
بتاريخ:
  • كاتب الموضوع

 

هل يوجد فرق بين الجملتين فى الاتصال 

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
 
and
 
Class.forName("oracle.jdbc.driver.OracleDriver");
 لان احد  الاصدقاء نصحنى باستخدام  Class.forName

 

ولكن جملة Class.forName لا تعمل معى اطلاقا

بتاريخ:

حسناً في الأول والأخير فإن 

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

و 

Class.forName("oracle.jdbc.driver.OracleDriver");

كلا هما API Class  يعني مكتبات جاهز الغرض من إستخدامهما هو واحد أن أحقق الإتصال مع قاعدة البيانات وأتعامل مع الجدوال من إسترجاع وتحديث وإضافة وما إلى ذالك 

طيب يوجد فرق ؟ نعم يوجد فرق ..ما هو ؟

الفرق في ما مكتوب من كود داخل كل منهما بمعنى إختلاف بالكود المكون لكل منهما 

كيف يعني ؟

يعني كما ذكرت في أعلاه هما في الأول والأخير عبارة عن Class 

هذه الـ class كيف كتبت وتكونت هنا يوجد إختلاف في بنائهما 

وهذا أدى إلى إختلاف بينهما فالأولى من إسمها تعمل Load و Registration  للـ Drive في JVM

بينما الثانية تعمل load  للـ driver  فقط  وكإنما تقول هذا الـ drive  الذي سوف تتعامل معه وإنتهى 

طيب أيهما ينصح بإستخدامه 

البعض ترجح الإستخدام للأولى  والبعض يقول الاصلح إستخدام الثانية 

لكن Class.forName تستخدم مع JVM  المتوافق مع الجافا  وليس مع JVM  التابع للـ Microsoft 

لذلك الـ registration  لها يكون ضمني أو تلقائي بتعبير أدق 

بينما ثانية تحتاج الى عمل registration لذلك غالباً ما نكتب مع الـ   DriverManager نلحقها بـ registerDriver

وغالباً ما نستخدم DriverManager.registerDriver عند التعامل مع قاعدة بيانات oracle 

بينما نستخدم  Class.forName  عندالتعامل مع Access  أو MySql  قواعد بيانات Microsoft 

وتستطيعين التجربة فلو غيرت لا تعمل  

إن أردت الأطلاع أكثر لكلاهما فأبحثي حول JDBC API 

 

وبالتوفيق 

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

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

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

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

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

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.