لماذا لا أستطيع أن يلقي أوراكل BLOB من النقطة جافا الأم

StackOverflow https://stackoverflow.com/questions/379594

سؤال

وأنا أقرأ الملف من 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، الذي يزيل ربما الحاجة للذهاب الى الطبقة الداخلية أوراكل على الإطلاق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top