نحن مع غزة
الـرئـيـسـيـة الـمـنـتـدى سـؤال & اجـابـة الـتـبـرع بـالـدم الاسـتـضـافـة هـلال لـيـنـكـس الـقـرآن الـكـريـم Dz-SeC team


التسجيل في المنتدى غير متاح حاليا, اذا كنت ترغب في الحصول على عضوية ارجو مراسلتي على البريد الالكتروني "[email protected]"


مطلوب مشرفين على كامل اقسام المنتدى


أخي / أختي , إن تسجيل عضوية جديدة في منتدى شبكة الجزائر للجميع لا يهدف إلى زيادة الأعضاء مطلقا
فلا خير في عضوية عدد مشاركاتها صفرا فنحن نرفض يوميا الكثير من العضويات المشكوك في أمرها
سواء كان هدفها الإعلانات الغير شرعية أو تخريب الموضوعات الخ , كل هذا حتى يبقى المنتدى
ساحة جادة عطرة تجود بالخير لكل زوارها وأعضائها
وصدقة جارية لكل من يشارك في كتابة معلومة تفيد غيره سوف يشكر الله عليها وهو في جوف الأرض ...

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

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

وتذكر قول سيد الخلق " إذا مات ابن آدم انقطع عمله إلا من ثلاث صدقة جارية أو علم ينتفع به أو ولدٍ صالح يدعو له "

   

[ مـنـتـدي لـــغــات الـــبرمجـــه | Programming Language ] قسم مختص بالبرمجة التفسيرية مثل : PHP, java, perl, Python, Bash, Shell script, JPython, AutoIt, Z shell, AWK, VB Script

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 16/06/2010, 09:04   المشاركة رقم: 1
المعلومات
الكاتب:
 حواء الهاكر  
اللقب:
عضــــو جديــــد
الصورة الرمزية
 
الصورة الرمزية حواء الهاكر

البيانات
التسجيل : May 2010
العضوية : 146
الاهتمامات : الجزائر
الإقامة : المطالعة
المواضيع : 33
الردود : 67
المجموع : 100
بمعدل : 0.02 يوميا
الاختراقات : []
مجتمعنا : []
الصنف : Not Hacker
آخر تواجد : 20/02/2011/16:08
سبب الغياب :
معدل التقييم: 16
نقاط التقييم: 10
حواء الهاكر is on a distinguished road
شكراً: 0
تم شكره 11 مرة في 11 مشاركة



الإتصالات
الحالة:
حواء الهاكر غير متواجد حالياً
وسائل الإتصال:

افتراضي 3.تخزين البيانات الضخمة بقاعدة البيانات اوراكل بواسطة الجافا

بسم الله الرحمن الرحيم


هل لديك مشروع و تريد تخزين و استرجاع البيانات من صور و مقاطع صوتية و مرئية بقاعدة بيانات ..Oracle

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



الـ BLOB و الـ CLOB: و هي اختصار لـ Binary Large Object و اختصار لـ Character Large Object. من ناحية أخرى، هذان النوعان صمما لحفظ و استرجاع البيانات الضخمة بقاعدة البيانات. و التي تصل سعة التخزين إلى أربع جيجابايت (4 GB) من البيانات. و هما من الأنواع التي توجد بالـ SQL3، و التي هي مدعومة من الـ JDBC 2.0. الـ JDBC 2.0 تخدم نوعان جديدان و هما الـ BLOB و الـ CLOB للتعامل مع الأنواع الجديدة من الـ SQL3. و بهذا الدرس سوف نستخدم الـ BLOB لتخزين و استرجاع الصور من و إلى قاعدة البيانات.

أولاً
سوف نقوم بإنشاء جدول جديد باستخدام SQL Plus أو بأي طريقة أخرى و نسميه demo:

CREATE TABLE demo (id NUMBER(6), image BLOB);

كما تلاحظ يوجد لدينا عمودان. الأول و هو مخصص لإضافة رقم خاص لكل صورة و هو من نوع NUMBER، و العمود الثاني و هو لتخزين البيانات (مثل: الصور و المقاطع الصوتية و المرئية) و هو من نوع BLOB.

سوف نقوم باستعراض أربع أمور:
  • <LI class=MsoNormal dir=rtl style="TEXT-JUSTIFY: kashida; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify; TEXT-KASHIDA: 0%; mso-list: l0 level1 lfo1; tab-stops: list .5in">تخزين البيانات بقاعدة البيانات. <LI class=MsoNormal dir=rtl style="TEXT-JUSTIFY: kashida; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify; TEXT-KASHIDA: 0%; mso-list: l0 level1 lfo1; tab-stops: list .5in">استرجاع البيانات من قاعدة البيانات و حفظها على هيئة ملفات. <LI class=MsoNormal dir=rtl style="TEXT-JUSTIFY: kashida; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify; TEXT-KASHIDA: 0%; mso-list: l0 level1 lfo1; tab-stops: list .5in">
  • حذف البيانات من قاعدة البيانات.
  • إظهار البيانات و استخدامها ببرامج الجافا.



تخزين البيانات بقاعدة البيانات:
الآن سوف نقوم بكتابة شفرة برمجية بلغة الجافا لتخزين الصور بقاعدة بياناتOracle.

الشفرة البرمجية:
كود:

import java.io.*; import java.sql.*; import oracle.sql.BLOB; import oracle.jdbc.driver.*; publicclass WriteBlob { private Connection con; private String url ="jdbc:oracle:thin:@127.0.0.1:1521:ORCL2"; private String user ="scott"; private String password ="tiger"; public WriteBlob() { try { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); con = DriverManager.getConnection(url, user, password); } catch (SQLException e) { System.err.println(e.getMessage()); e.printStackTrace(); } } publicstaticvoid main(String[] args) throws Exception, IOException { new WriteBlob().process(); } publicvoid process() throws IOException, SQLException { int rows = 0; FileInputStream fin =null; OutputStream out =null; ResultSet rslt =null; Statement stmt =null; BLOB photo =null; // NOTE: oracle.sql.BLOB!!! long person_id = 0; try { con.setAutoCommit(false); stmt = con.createStatement(); rslt = stmt.executeQuery("SELECT image FROM demo WHERE id = 1 FOR UPDATE NOWAIT"); while (rslt.next()) { rows++; photo = (BLOB)rslt.getBlob("image"); } rslt.close(); rslt =null; if (rows == 0) { rows = stmt.executeUpdate("INSERT INTO demo VALUES (1, empty_blob())"); System.out.println(rows +" rows inserted"); // Retrieve the locator rows = 0; rslt = stmt.executeQuery("SELECT image FROM demo WHERE id = 1 FOR UPDATE NOWAIT"); rslt.next(); photo = ((OracleResultSet)rslt).getBLOB("image"); rslt.close(); rslt =null; } stmt.close(); stmt =null; // Now that we have the locator, lets store the photo File binaryFile =new File("jfc.gif"); fin =new FileInputStream(binaryFile); out = photo.getBinaryOutputStream(); // Get the optimal buffer size from the BLOB byte[] buffer =newbyte[photo.getBufferSize()]; int length = 0; while ((length = fin.read(buffer)) !=-1) { out.write(buffer, 0, length); } // you need to close the output stream before // you commit, or the changes are lost! out.close(); out =null; fin.close(); fin =null; con.commit(); } catch (SQLException e) { System.err.println("SQL Error: "+ e.getMessage()); } catch (IOException e) { System.err.println("IO Error: "+ e.getMessage()); } finally { if (rslt !=null) { try { rslt.close(); } catch (SQLException ignore) {} } if (stmt !=null) { try { stmt.close(); } catch (SQLException ignore) {} } if (out !=null) { try { out.close(); } catch (IOException ignore) {} } if (fin !=null) { try { fin.close(); } catch (IOException ignore) {} } } } protectedvoid finalize() throws Throwable { if (con !=null) { try { con.close(); } catch (SQLException ignore) {} } super.finalize( ); }
}


و الآن سوف نقوم بشرح مبسط للشفرة البرمجية السابقة:
كود:

private String url ="jdbc:oracle:thin:@127.0.0.1:1521:ORCL2"; private String user ="scott"; private String password ="tiger";


هنا سوف نقوم بتحديد نوع الـ Driver و بالمثال السابق استخدمنا thin driver و قمنا بتحديد مكان قاعدة البيانات و هي موجودة بالجهاز المحلي و تحديد المنفذ و هو 1521 و حددنا اسم الـ SID لقاعدة البيانات و هي ORCL2 (يجب تغيير المتغيرات عند الحاجة لذلك). و قمنا أيضاً بتحديد اسم المستخدم و كلمة المرور له.
كود:

rows = stmt.executeUpdate("INSERT INTO demo VALUES (1, empty_blob())"); System.out.println(rows +" rows inserted"); // Retrieve the locator rows = 0; rslt = stmt.executeQuery("SELECT image FROM demo WHERE id = 1 FOR UPDATE NOWAIT"); rslt.next(); photo = ((OracleResultSet)rslt).getBLOB("image"); rslt.close(); rslt =null;


بعد ذلك قمنا بالاتصال بقاعدة البيانات (تستطيع قراءة الدرس السابق عن الاتصال بقاعدة البيانات بموقع الموسوعة العربية للكمبيوتر و الانترنت أو الفريق العربي للتكنولوجيا). و من ثم قمنا بإضافة BLOB فارغ (يجب أولاً إضافة empty_blob() لقاعدة البيانات و استرجاعها من قاعدة البيانات، و بعد ذلك نقوم بإرسال البيانات إلى قاعدة البيانات).
كود:

// Now that we have the locator, lets store the photo File binaryFile =new File("jfc.gif"); fin =new FileInputStream(binaryFile); out = photo.getBinaryOutputStream(); // Get the optimal buffer size from the BLOB byte[] buffer =newbyte[photo.getBufferSize()]; int length = 0; while ((length = fin.read(buffer)) !=-1) { out.write(buffer, 0, length); } // you need to close the output stream before // you commit, or the changes are lost! out.close(); out =null; fin.close(); fin =null; con.commit();



بالجزء السابق من الشفرة البرمجية نحدد اسم الملف (على سبيل المثال: jfc.gif)، و من ثم نقوم بتخزينه بقاعدة البيانات. و بعد ذلك قفل الملف و تنفيذ المطلوب بقاعدة البيانات لكي لا نخسر ما قمنا به.

استرجاع البيانات من قاعدة البيانات و حفظها على هيئة ملفات:
الآن سوف نقوم باسترجاع البيانات (على سبيل المثال: الصورة السابقة) على الجهاز من قاعدة البيانات.

الشفرة البرمجية:
كود:

import java.io.*; import java.sql.*; import oracle.sql.*; import oracle.jdbc.*; publicclass ReadBlob { private Connection con =null; private PreparedStatement pstmt =null; private ResultSet rs =null; private BLOB blob =null; private String selectSQL ="SELECT image FROM demo WHERE id = ?"; private String url ="jdbc:oracle:thin:@127.0.0.1:1521:ORCL2"; private String user ="scott"; private String password ="tiger"; public ReadBlob() { try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch(ClassNotFoundException e) { e.printStackTrace(); } try { con = DriverManager.getConnection(url, user, password); pstmt = con.prepareStatement(selectSQL); pstmt.setInt(1, 1); //for set the ID (line 13) rs = pstmt.executeQuery(); while(rs.next()) { blob = ((OracleResultSet)rs).getBLOB("image"); } InputStream blobStream = blob.getBinaryStream(); FileOutputStream fileOutStream =new FileOutputStream("abc.gif"); byte[] buffer =newbyte[10]; int nbytes = 0; while ((nbytes = blobStream.read(buffer))!=-1) { fileOutStream.write(buffer,0,nbytes); } fileOutStream.flush(); fileOutStream.close(); blobStream.close(); rs.close(); pstmt.close(); con.close(); } catch(IOException ex) { ex.printStackTrace(); } catch(Exception ex) { ex.printStackTrace(); } } publicstaticvoid main(String[] args) throws Exception { new ReadBlob(); } }


سوف نقوم بشرح جزأين من الشفرة البرمجية:
كود:

con = DriverManager.getConnection(url, user, password); pstmt = con.prepareStatement(selectSQL); pstmt.setInt(1, 1); //for set the ID (line 13) rs = pstmt.executeQuery(); while(rs.next()) { blob = ((OracleResultSet)rs).getBLOB("image"); }


نقوم باسترجاع الصورة التي تحمل الرقم المخصص (على سبيل المثال الرقم 1).
كود:

InputStream blobStream = blob.getBinaryStream(); FileOutputStream fileOutStream =new FileOutputStream("abc.gif"); byte[] buffer =newbyte[10]; int nbytes = 0; while ((nbytes = blobStream.read(buffer))!=-1) { fileOutStream.write(buffer,0,nbytes); }


باستخدام getBinaryStream() نقوم باسترجاع البيانات كاملة و حفظها على هيئة ملف gif.



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

UPDATE demo SET image = empty_blob() WHERE id = ?


إذا قمنا بإسناد NULL لعمود الصور عند الحذف، فسوف نحصل على NullPointerException عند تخزين البيانات لنفس العمود مرة أخرى أو نقوم بإضافة empty_blob() و بعد ذلك تخزين البيانات.


إظهار البيانات و استخدامها ببرامج الجافا:
و أخيراً سوف نقوم بعرض البيانات بالبرامج (على سبيل المثال: عرض الصورة السابقة من قاعدة البيانات).

الشفرة البرمجية:
كود:

import java.sql.*; import oracle.sql.*; import oracle.jdbc.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; publicclass Main extends JFrame { private Connection con =null; private PreparedStatement pstmt =null; private ResultSet rs =null; private BLOB blob =null; private String selectSQL ="SELECT image FROM demo WHERE id = ?"; private String url ="jdbc:oracle:thin:@127.0.0.1:1521:ORCL2"; private String user ="scott"; private String password ="tiger"; private JPanel panel =new JPanel(); private ImageIcon icon; private JLabel imageLabel; public Main() { super("Main"); try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch(ClassNotFoundException e) { e.printStackTrace(); } try { con = DriverManager.getConnection(url, user, password); pstmt = con.prepareStatement(selectSQL); pstmt.setInt(1, 1); //for set the ID (line 14) rs = pstmt.executeQuery(); rs.next(); blob = ((OracleResultSet)rs).getBLOB("image"); icon =new ImageIcon(blob.getBytes(1, (int)blob.length())); rs.close(); pstmt.close(); con.close(); imageLabel =new JLabel(icon); } catch(Exception ex) { ex.printStackTrace(); } Container cp = getContentPane(); panel.add(imageLabel); cp.add("Center", panel); pack(); setVisible(true); addWindowListener(new WindowAdapter() { publicvoid windowClosing(WindowEvent e) { System.exit(0); } }); } publicstaticvoid main(String args[]) { new Main(); } }


و هنا صورة للبرنامج السابق:

[]


لتحميل الشفرات البرمجية : مخالف



آخر مواضيع » حواء الهاكر

توقيع : حواء الهاكر


التعديل الأخير تم بواسطة yasMouh ; 16/06/2010 الساعة 16:23 سبب آخر: الرابط مخالف
عرض البوم صور حواء الهاكر   رد مع اقتباس
الأعضاء الذين قالوا شكراً لـ حواء الهاكر على المشاركة المفيدة:
mbsoft (07/12/2010)
قديم 16/06/2010, 09:43   المشاركة رقم: 2
المعلومات
الكاتب:
 Smail002  
اللقب:
.: مستشار اول :.

الإتصالات
الحالة:
Smail002 غير متواجد حالياً
وسائل الإتصال:

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


التعديل الأخير تم بواسطة Smail002 ; 16/06/2010 الساعة 09:45
عرض البوم صور Smail002   رد مع اقتباس
قديم 17/06/2010, 13:50   المشاركة رقم: 3
المعلومات
الكاتب:
 حواء الهاكر  
اللقب:
عضــــو جديــــد

الإتصالات
الحالة:
حواء الهاكر غير متواجد حالياً
وسائل الإتصال:

**** على التنبيه اخي

عرض البوم صور حواء الهاكر   رد مع اقتباس
قديم 18/08/2010, 09:49   المشاركة رقم: 4
المعلومات
الكاتب:
  MdMn HaCk3r  
اللقب:
.: المدير السابق للمنتدى :.

الإتصالات
الحالة:
MdMn HaCk3r غير متواجد حالياً
وسائل الإتصال:

****ً لمجهودكِ الرائع
شراح وافي ومتعوب عليه
بارك الله فيكِ

عرض البوم صور MdMn HaCk3r   رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


حالياً الأعضاء النشيطين الذين يشاهدون هذا الموضوع : 1 (0 عضو و 1 ضيف)
 

(أظهر الكل الأعضاء الذين قاموا بمشاهدة هذا الموضوع : 16
ApOcalYpse , Bing , BlackHunter.Dz , co10ol , colzero , Cyclone , Dz/Dc , Igor000rogI , حواء الهاكر , marwane , mbsoft , MdMn HaCk3r , shrekcoll , Smail002 , X_AviaTique_X , yasMouh

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
تلغيم قواعد البيانات بشل ^_^ MdMn HaCk3r [ مـنتدى حمايه المواقع والسيرفرات | Hacking Site's & Servers ] 2 30/01/2011 08:30
{8}---{2}حقن قواعد البيانات اصدار 5 الوصول لعمود الباسورد{2}---{8} ViRuS_Ra3cH دورة اختراق المواقع والسيرفورات | kala$nikov 0 18/03/2010 14:13
{7}---{1}حقن قواعد البيانات اصدار 5الدعسه الاولى{1}---{7} ViRuS_Ra3cH دورة اختراق المواقع والسيرفورات | kala$nikov 0 18/03/2010 14:11
--{1} شرح اساسيات***65279; قواعد البيانات{1}-- ViRuS_Ra3cH دورة اختراق المواقع والسيرفورات | kala$nikov 1 18/03/2010 12:50
--{2} استعلامات قواعد البيانات {2}-- ViRuS_Ra3cH دورة اختراق المواقع والسيرفورات | kala$nikov 0 18/03/2010 12:49

الساعة معتمدة بتوقيت جرينتش +1 . الساعة الآن : 16:06.
Copy Right Des 2010 - 2014 To is|sec Organization, Des By  yasMouh 
Powered By vBulletin Special Edition, Secured By Dz-SeC team
Support by Dz-SeC team




RSS RSS 2.0 XML MAP HTML



 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115