حفظ وإسترجاع الصور من والى قاعدة بيانات derby & MySql

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

حفظ وإسترجاع الصور من والى قاعدة بيانات derby & MySql

مُساهمة من طرف أحمد مناع في الخميس ديسمبر 24, 2015 5:38 pm

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

أهلا وسهلا بكم إخوانى الكرام 

الكثير منا يود تخزين الصورة فى قاعدة بيانات مشروعة واستخادمه لاحقا من خلال الجافا ..و يوجد عدة طرق لتخزن الصور و استرجاعها مرة اخرى و ذلك من خلال نوع البيانات SQL BLOB التي تستخدم لحفظ البيانات الثنائية في جدول قاعدة البيانات ويتم ذلك بإستخدام الواجهة PreparedStatement التى لديها الطرق getBlob وsetBlob لتسمح لنا للوصول إلى قيمة SQL BLOB ولكى نتمكن من حفظ و استرجاع الصورة فى قاعدة البيانات يجب اتباع الخطوات التالية :

1_إنشاء حقل بيانات فى جدول قاعدة البيانات من BLOB وهى اختصار للجملة binary large object والتى تسمح بتخزين البيانات كبيرة الحجم كبيانات ثنائية

2_نقوم بالاتصال بقاعدة البيانات ذلك عن طريق الكود التالى :

الرمز:
String host = "jdbc:derby://localhost:1527/Employees";
        String uName = "admin";
        String uPass= "admin";
    
        Connection con = DriverManager.getConnection( host, uName, uPass);

3_نقوم بانشاء الطريقة العامة التالية لخلق PreparedStatement

الرمز:
PreparedStatement pstmt = con.prepareStatement(
 'INSERT INTO user_images VALUES(?, ?)');

من جملة الاستعلام السابقة يمكنك ملاحظة اننا سنقوم بتخزين الصورة فى جدول قاعدة البيانات user_images و الذى يحتوى على حقلين لذلك استخدمنى علامتى الاستفهام أعلاه

4_ لكتابة البيانات إلى BLOB، يستخدم الكائن PreparedStatement إما Java Blob object أو InputStream. في حالة استخدام الاخيرة يجب تحديد طول البيانات الثنائية ومن ثم حفظها فى قاعدة البيانات وذلك على النحو التالى :

الرمز:
File file = new File( "user.png" );
long length = file.length();
InputStream in = new FileInputStream( file );
pstmt.setString( 1, "ali" );
pstmt.setBlob( 2, in, length );
pstmt.executeUpdate();

يمكنك ملاحظة اننا حددنا الصورة المراد حفظها فى قاعدة البيانات user.png ثم قمنا طول البيانات الثنائية ثم استخدمنا الطريقة setString لوضع اسم فى العامود رقم واحد فى الجدول واستخدمنا الطريقة setBlob لوضع الصورة فى العامود رقم 2 كبيانات ثنائية مع تحديد طول تلك البيانات و هكذا تتم تتم عملية الحفظ

5_ إسترجاع صورة من جدول قاعدة بيانات ويتم ذلك بتنفيذ استعلام واستخدام فئة resultset والذى يحتوي على أسلوب getBlob () للحصول على اللبيانات ثنائية كما يلى :

الرمز:
ResultSet rs = stmt.executeQuery(
               "select image from user_images where user_name='ali' ");
rs.first();
Blob blob = rs.getBlob(1);
InputStream in = blob.getInputStream( );
BufferedImage image = ImageIO.read( in );


تحياتى لكم

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: حفظ وإسترجاع الصور من والى قاعدة بيانات derby & MySql

مُساهمة من طرف VB.NET في السبت ديسمبر 26, 2015 9:22 am


تحياتى لك استاذى على ها المجهود

VB.NET
المراقبين
المراقبين

تاريخ التسجيل : 18/02/2011
المساهمات : 117
النقاط : 185
التقيم : 6
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: حفظ وإسترجاع الصور من والى قاعدة بيانات derby & MySql

مُساهمة من طرف زهراء في الأربعاء ديسمبر 30, 2015 7:41 am


بارك الله فى عمل استاذى احمد مناع

زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى