بتاريخ: 2 ديسمبر 201510 سنة comment_268327 السلام عليكم ورحمةا لله وبركاته اقوم بعمل برنامج بالجافا لتشفير البيانات حيث يتم ادخال المفتاح والتكست المراد تشفيره ثم بعد ذلك اعمل كونكات للمتغيرين مع بعض والناتج يمر على اكثر من عملية لنحصل فى النهايه على قيمه مشفره. حاولت اطبق البرنامج دا على جدول لتشفير احد الاعمده ولكن المشكله تاتى عند عمل الابديت حيث يقوم بعمل ابديل للقيم بداخل العمود باخر قيمة مشفره فى العمود كما هو موضح فى الكود 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); تقديم بلاغ
بتاريخ: 2 ديسمبر 201510 سنة comment_268339 لا بد من وضع كود التحديث داخل الـ loop وليس خارجها تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268385 لا بد من وضع كود التحديث داخل الـ loop وليس خارجها استسمحك ان تقوم بتعديلها تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268386 لا بد من وضع كود التحديث داخل الـ loop وليس خارجها استسمحك ان تقوم بتعديلها لانى جربت طرق مختلفه ولم تصلح معى تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة comment_268387 أول ما يتبادر الى الذهن أن السبب هو عدم وضع كود التحديث داخل loop لكن عند تتبع الكود نجد أن كود التحديث هو داخل الـ loop من الأساس while (srs.next()) { srs.updateString("job_name", updatedname); srs.updateRow(); con.commit(); } بغض النظر عن باقي الكود جربي كود التحيث لوحده كما فعلت أنا وجدت أنه يعمل تحديث على كافة الصفوف وليس الصف الأخير فقط لأنه ضمن loop أعتقد هنالك خطأ آخر لم تضعي الكود بأكمله في المشاركة ..هنالك أكواد غير متواجدة حتى نتمكن من معرفة سبب المشكلة كما ذكرت أخذت كود التحديث جربته لوحده يعمل تحديث لكافة الصفوف وليس للصف واحد أو الصف الأخير تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268388 أول ما يتبادر الى الذهن أن السبب هو عدم وضع كود التحديث داخل loop لكن عند تتبع الكود نجد أن كود التحديث هو داخل الـ loop من الأساس while (srs.next()) { srs.updateString("job_name", updatedname); srs.updateRow(); con.commit(); } بغض النظر عن باقي الكود جربي كود التحيث لوحده كما فعلت أنا وجدت أنه يعمل تحديث على كافة الصفوف وليس الصف الأخير فقط لأنه ضمن loop أعتقد هنالك خطأ آخر لم تضعي الكود بأكمله في المشاركة ..هنالك أكواد غير متواجدة حتى نتمكن من معرفة سبب المشكلة كما ذكرت أخذت كود التحديث جربته لوحده يعمل تحديث لكافة الصفوف وليس للصف واحد أو الصف حضرتك الكود موجود بالكامل باستثناء دالتين انا وضعت اهيكل بتاعها فقط تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268389 أول ما يتبادر الى الذهن أن السبب هو عدم وضع كود التحديث داخل 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;} } تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268392 كلاس الكونكشن كامل 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()); } } } تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة comment_268396 يا أخت سامية أنا لم أقل أن الـ connection فيه خطأ ولا كود التحديث فيه خطأ أنا قلت يوجد شيء خطأ وليس سببها وضع كود التحديث ضمن الـ loop ربما أثناء الإستدعاء تقديم شيء على شيء آخر ولهذا طلبت أن ترفعي لي الكود بشكل كامل وليس كل مرة جزء يفتقد الى جزء آخر من الكود أعلاه يتبين أن لديك Two Class قولي هذا الـ class الأول وهذا الـ class الثاني الذي يحتوي على main ضعيهم بشكل منظم بمشاركتين منفصلتين كل class بمشاركة منفصلة وأكون شاكرة وممتنة إذا إستخدمت من المحرر الذي تكتبين فيه المشاركة إستخدمي الرمز <> إضغطي عليه عندما تريدين كتابة الكود حتى الكود يكون واضح وإن شاء الله نستطيع المساعدة ويتضح الموضوع إذا صعب على حضرتك الموضوع أرفعي كل class بملف text أهم شيء الكود مكتمل تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268397 يا أخت سامية أنا لم أقل أن الـ connection فيه خطأ ولا كود التحديث فيه خطأ أنا قلت يوجد شيء خطأ وليس سببها وضع كود التحديث ضمن الـ loop ربما أثناء الإستدعاء تقديم شيء على شيء آخر ولهذا طلبت أن ترفعي لي الكود بشكل كامل وليس كل مرة جزء يفتقد الى جزء آخر من الكود أعلاه يتبين أن لديك Two Class قولي هذا الـ class الأول وهذا الـ class الثاني الذي يحتوي على main ضعيهم بشكل منظم بمشاركتين منفصلتين كل class بمشاركة منفصلة وأكون شاكرة وممتنة إذا إستخدمت من المحرر الذي تكتبين فيه المشاركة إستخدمي الرمز <> إضغطي عليه عندما تريدين كتابة الكود حتى الكود يكون واضح وإن شاء الله نستطيع المساعدة ويتضح الموضوع إذا صعب على حضرتك الموضوع أرفعي كل class بملف text أهم شيء الكود مكتمل أشكرك أختى الغالية على جهودك معى تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268398 مرفق ملف مضغوط به اربع كلاسات 1- main 2- enc 3- bean 4- connection تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268399 مرفق ملف مضغوط به اربع كلاسات 1- main 2- enc 3- bean 4- connection PRO.rar تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة comment_268408 أفضل شئ هو تشغيل البرنامج في حالة debug وهذا يسهل معرفة المشكلة تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة comment_268411 يا أخت سامية حضرتك تدخلين الـkey الذي على أساسه يعمل تشفير أم هي خوارزمية تشفير من ضمنها لإن أكثر من مرة جربت يقفل البرنامج ولا يحدث أي إستجابة سواء عند عملية الـ run أو أو عند الـ Debug نفس المشكلة يقف و لايحدث شيء ويطلب غلق البرنامج قومي بعمل Debug لديك وأخبرينا النتيجة تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268417 أشكرك أختى ميسم الكرام على ها الاهتمام حضرتك انا برن البرنامج عادى وهذا هو الخرج --------------------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هذه هى القيمه المشفره والتى يتم بها تشفير كافة البيانات تم تعديل 3 ديسمبر 201510 سنة بواسطة ساميه محى سرور تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268418 أشكرك أختى ميسم الكرام على ها الاهتمام حضرتك انا برن البرنامج عادى ودى سكرين شوت منها <--------------------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. > تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة comment_268421 للأسف أنا أتمنى أحصل على مخرجات ..لكن يقف ويقفل لدي بأكثر من مرة حسناً هل تقومين بإعطاء قيمة الـ Key ؟ تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268424 للأسف أنا أتمنى أحصل على مخرجات ..لكن يقف ويقفل لدي بأكثر من مرة حسناً هل تقومين بإعطاء قيمة الـ Key ؟ نعم عند الرن تايم اعطيه مثلا 123 تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة comment_268426 للأسف هو يتوقف وليس هنالك أي response ..أعتقد ربما حدث خطأ في إرسال الملفات هل هذه النسخة التي تعملين عليها ربما تعملين على نسخة محدثة غير التي لدي ربما هذا محتمل حدث خلط عند الإرسال تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268435 للأسف هو يتوقف وليس هنالك أي response ..أعتقد ربما حدث خطأ في إرسال الملفات هل هذه النسخة التي تعملين عليها ربما تعملين على نسخة محدثة غير التي لدي ربما هذا محتمل حدث خلط عند الإرسال ايوه نفس النسخه اعمل بها ولكنى اعمل على جى كريتور طيب غيرتى اى بى (ip) تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة comment_268439 غيرت الـ ip وغيرت مايلزم من جدول واسم المستخدم وكلمة المرور وحسبت بالحسبان انه حضرتك تعملين على بيئة مختلفة لذلك إستخدمت بالادخال الرمز التالي String inputKey = JOptionPane.showInputDialog("Enter Your KeyText") ; // System.out.println("Enter Your KeyText "); لكن بصراحة أول بداية بالتنفيذ يتوقف كل شيء أنا سبق وذكرت إني جربت كود التحديث بشكل منفصل عن باقي كود التشفير وجدته يعمل بشكل صحيح و التحديث يتم على كل الصفوف يعني كود التحديث لا توجد فيه أي مشكلة وكود الإتصال لا يوجد فيه أي مشاكل وبما أنه كود التشفير يعمل لديك إذن كـ method , class كلها تعمل بشكل صحيح بقي تأكدي من الإستدعاء في main والله الموفق تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268444 هل يوجد فرق بين الجملتين فى الاتصال DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); and Class.forName("oracle.jdbc.driver.OracleDriver"); لان احد الاصدقاء نصحنى باستخدام Class.forName تقديم بلاغ
بتاريخ: 3 ديسمبر 201510 سنة كاتب الموضوع comment_268445 هل يوجد فرق بين الجملتين فى الاتصال DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); and Class.forName("oracle.jdbc.driver.OracleDriver"); لان احد الاصدقاء نصحنى باستخدام Class.forName ولكن جملة Class.forName لا تعمل معى اطلاقا تقديم بلاغ
بتاريخ: 4 ديسمبر 201510 سنة comment_268463 حسناً في الأول والأخير فإن 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 وبالتوفيق تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.