Zum Inhalt springen

Fehler beim Casten auf OracleResultSet


Pinhead

Empfohlene Beiträge

Hallo,

ich habe eine OracleDatasource eingerichtet. Auf die kann ich auch ganz normal zugreifen. Wenn ich allerdings versuche mit folgendem Code

BLOB blob;

rset = (OracleResultSet) stmt.executeQuery(						"select * from tbl_anhang where anhang_id="				+ ianhang_id							+ " FOR UPDATE");

rset.next();

blob = ((OracleResultSet) rset).getBLOB("anhang");


ein OracleResultSet zu bekomme kommt es zu einer Exception.

Dieser Code funktionierte aber noch als ich einen direkten JDBC aufruf gemacht habe.

Kann mir jemand sagen wie ich den Code auch mit einer DataSource ans laufen kriege ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sorry für den Code oben. War ein C&P Fehler also nochmal


stmt = c.createStatement();

BLOB blob;

rset = stmt.executeQuery("select * from tbl_anhang where anhang_id="

                                   + ianhang_id + " FOR UPDATE");

rset.next();

blob = ((OracleResultSet) rset).getBLOB("anhang");

So executeQuery gibt ein Resultset zurück. Ich brauche aber um den Oracle BLOB benutzen zu können ein OracleResultSet.

Die Exception die geworfen wird ist eine ClassCastException.

@zirri Wieso caste ich in die falsche Richtung ? Mit dem direkten JDBC Aufruf funktionierte es doch auch ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Exception die geworfen wird ist eine ClassCastException.
Posten!

Mit Stacktrace!

Und dem Quelltextausschnitt, der sie verursacht hat!

Nur so lässt sich wirklich feststellen, wo die Ursache liegt.

Probier doch zum Debuggen mal folgendes:


stmt = c.createStatement();

rset = stmt.executeQuery("select * from tbl_anhang where anhang_id=" + ianhang_id + " FOR UPDATE");

System.out.println("ResultSet implementation: " + rset.getClass().getName());

Was kommt raus?

Link zu diesem Kommentar
Auf anderen Seiten teilen

So also hier erstmal die Exception

[20.10.05 08:41:05:847 CEST] 183d8e93 SystemErr     R java.lang.ClassCastException: com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet

[20.10.05 08:41:05:847 CEST] 183d8e93 SystemErr     R 	at de.ticket.basis.commands.BeanstandungAnlegenCmd.erstelleAnhang(BeanstandungAnlegenCmd.java:224)

[20.10.05 08:41:05:847 CEST] 183d8e93 SystemErr     R 	at de.ticket.basis.commands.BeanstandungAnlegenCmd.erstelleBeanstandung(BeanstandungAnlegenCmd.java:138)

[20.10.05 08:41:05:847 CEST] 183d8e93 SystemErr     R 	at de.ticket.basis.commands.BeanstandungAnlegenCmd.execute(BeanstandungAnlegenCmd.java:67)

[20.10.05 08:41:05:847 CEST] 183d8e93 SystemErr     R 	at de.ticket.process.beanstandung.BeanstandungServiceBean.anlegen(BeanstandungServiceBean.java:43)

[20.10.05 08:41:05:847 CEST] 183d8e93 SystemErr     R 	at de.ticket.process.beanstandung.EJSRemoteStatelessBeanstandungService_091a54ea.anlegen(EJSRemoteStatelessBeanstandungService_091a54ea.java:53)

[20.10.05 08:41:05:847 CEST] 183d8e93 SystemErr     R 	at de.ticket.process.beanstandung._BeanstandungServiceRemote_Stub.anlegen(_BeanstandungServiceRemote_Stub.java:263)

[20.10.05 08:41:05:857 CEST] 183d8e93 SystemErr     R 	at de.ticket.client.beanstandung.BeanstandungServiceDel.anlegen(BeanstandungServiceDel.java:52)

[20.10.05 08:41:05:857 CEST] 183d8e93 SystemErr     R 	at de.ticket.ticketweb.actions.BeanstandungsAction.execute(BeanstandungsAction.java:255)

[20.10.05 08:41:05:857 CEST] 183d8e93 SystemErr     R 	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)

[20.10.05 08:41:05:857 CEST] 183d8e93 SystemErr     R 	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)

[20.10.05 08:41:05:857 CEST] 183d8e93 SystemErr     R 	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)

[20.10.05 08:41:05:857 CEST] 183d8e93 SystemErr     R 	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)

[20.10.05 08:41:05:857 CEST] 183d8e93 SystemErr     R 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:948)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:530)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:176)

[20.10.05 08:41:05:867 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:79)

[20.10.05 08:41:05:877 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:201)

[20.10.05 08:41:05:877 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)

[20.10.05 08:41:05:877 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:114)

[20.10.05 08:41:05:877 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:186)

[20.10.05 08:41:05:877 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)

[20.10.05 08:41:05:877 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)

[20.10.05 08:41:05:877 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:610)

[20.10.05 08:41:05:877 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:435)

[20.10.05 08:41:05:877 CEST] 183d8e93 SystemErr     R 	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)

Verursachender Aufruf

blob = ((OracleResultSet) rset).getBLOB("anhang");

@Perdi bei deiner Zeile kommt

ResultSet implementation: com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet

@Zirri Ich brauche das OracleResultSet weil ich aus dem Oracle BLOB einen BinaryOutputStream bekommen kann und damit den Anhang in die Datenbank speichern kann. Der normale SQL Blob bietet diese Methode nicht an

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Perdi bei deiner Zeile kommt

ResultSet implementation: com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet

Dann hast du doch den Fehler gefunden.

Ein WSJdbcResultSet ist eben kein OracleResultSet. So wie es aussieht wrappt der WebSphere Application Server den JDBC Zugriff nochmal. Wie auch immer, die Exception ist schon "richtig" an der Stelle. Du wirst also entweder manuell den Oracle Treiber verwenden, oder aber den BLOB Zugriff anders lösen müssen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...