لماذا لا أستطيع أن يلقي أوراكل BLOB من النقطة جافا الأم
-
22-08-2019 - |
سؤال
وأنا أقرأ الملف من resultset ووهو مطلوب لحفظ الملف في قاعدة بيانات أوراكل.
...
ResultSet rs = ...
java.sql.Blob myfile = rs.getBlob("field")
java.io.OutputStream os = ((oracle.sql.BLOB) myfile).getBinaryOutputStream();
وأحصل على رسالة الخطأ هذه
java.lang.ClassCastException
وأي واحد لديها حل لهذا؟ شكرا!
المحلول 3
ولقد وجدت الحل. أود أن مشاركتها مع أولئك الذين لديه هذه المشكلة.
ورمز للحصول على outputstream من النقطة أوراكل هو:
java.io.OutputStream os = ((oracle.sql.BLOB) myBlob).setBinaryStream(1L);
وsetBinaryStream () يعود في الواقع الكائن java.io.OutputStream
نصائح أخرى
java.sql.Blob href="http://java.sun.com/javase/6/docs/api/java/sql/Blob.html" rel="nofollow noreferrer"> هو واجهة . يفترض تنفيذ عاد في ResultSet
الخاص بك هو تطبيق مختلف لoracle.sql.BLOB
؟
وماذا myfile.getClass()
العودة؟
ويبدو أنك يكن لديك oracle.sql.BLOB هناك (إذا فعلت ذلك، فإنه يجب أن تعمل، BLOB ينفذ النقطة). ماذا يقول ClassCastException هو؟
ما هو إصدار أوراكل وما إصدار من برنامج تشغيل JDBC الذي تستخدمه؟
getBinaryOutputStream م> تم إهمال أي حال، يجب عليك استخدام <م> setBinaryStream م> في (3.0) واجهة JDBC، الذي يزيل ربما الحاجة للذهاب الى الطبقة الداخلية أوراكل على الإطلاق.