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

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

اذهب الى الأسفل

حفظ وإسترجاع الصور من والى قاعدة بيانات derby & MySql Empty حفظ وإسترجاع الصور من والى قاعدة بيانات 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
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

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

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

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


تحياتى لك استاذى على ها المجهود
VB.NET
VB.NET
المراقبين
المراقبين

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

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

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

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


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

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

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

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


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