Zum Inhalt springen

Olga_

Mitglieder
  • Gesamte Inhalte

    2
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Olga_

  1. Danke für die Hilfe, ich schaue mir jetzt alles an.

  2. Hallo Leute, ich muss ein Objekt mit dem Attribut von dem Datentyp BLOB aus einer in Java-geschriebenen Web-Anwendung in der Oracle-DB speichern. Unten folgt die Beschreibung Wenn jemand die Vorgehensweise kennt oder eine Idee hätte... im Voraus besten Dank für jede Unterstützung. Olga. Oracle: Das Feld in der DB-Tabelle Meine_Tabelle: "BEGRUENDUNG" BLOB Mit dem Benutzer System habe ich einen tablespace angelegt: create tablespace lobs datafile 'lobs.dbf' size 5M extent management local uniform size 1M Dann die Tabelle geändert: alter table Meine_Tabelle move lob (begruendung) store as (tablespace LOBS storage (initial 100k next 100k pctincrease 0) chunk 16k pctversion 10 nocache logging) Bei der Abfragen select begruendung from Meine_Tabelle oder select begruendung from Meine_Tabelle FOR UPDATE kommt die Fehlermeldung: ORA-00932: Inkonsistente Datentypen: NUMBER erwartet, BLOB erhalten Ein Update mit update Meine_Tabelle set begruendung = EMPTY_BLOB() ändert nichts an der Sache. Mapping: <field-descriptor id="16" name="begruendung" column="BEGRUENDUNG" jdbc-type="BLOB" primarykey="false" /> Java: import oracle.sql.BLOB; private BLOB begruendung; Die Infromationen, die in dem BLOB-Feld gespeichert werden sollen habe ich in Form eines Strings. Für die Speicherung in der DB versuche ich daraus ein BLOB zu erzeugen: byte[] blobBites = this.begruendungStr.getBytes(); begruendung = BLOB.empty_lob(); begruendung.setBytes(1,blobBites); Statische Methode BLOB.empty_lob() liefert kein BLOB-Objekt, sondern null zurück. Ich bin mir auch nicht sicher, dass ich für das von dieser Methode gelieferten Blob-Objekt die Methode begruendung.setBytes(1,blobBites) ausführen kann. Ausprobieren kann ich auch nicht, da ich kein BLOB-Objekt erzeugen kann (Es gibt keinen Konstruktor für die BLOB-Klasse new BLOB()) Für die Methode BLOB.createTemporary(Connnection , boolean, int) brauche ich die Connection zu der DB. Da ich aber alle DB-Zugriffe über DAOs verwalte, habe ich nicht wirklich die Connection in meiner Struts-Form. Rein theoretisch kann man sie von DAO mit einer public-Methode holen. Das passt natürlich nicht zu dem Konzept und unsere Erfahrungen sagen, dass die Connection dann auch nicht zuverlässig ist. So lange der Befehl update Meine_Tabelle set begruendung = EMPTY_BLOB() nicht ausgeführt wurde, ist in Java nach dem Lesen des Objektes aus Oracle das Attribut Begrundung = null. Wenn aber das Feld ein EMPTY_BLOB enthält, bekomme ich einen Fehler schon bei Mapping: Caused by: java.lang.IllegalArgumentException: Can not set oracle.sql.BLOB field de……….begruendung to [b at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) at java.lang.reflect.Field.set(Field.java:657)
  3. Hallo Leute, ich muss ein Objekt mit dem Attribut von dem Datentyp BLOB aus einer in Java-geschriebenen Web-Anwendung in der Oracle-DB speichern. Unten folgt die Beschreibung Wenn jemand die Vorgehensweise kennt oder eine Idee hätte... im Voraus besten Dank für jede Unterstützung. Olga. Oracle: Das Feld in der DB-Tabelle Meine_Tabelle: "BEGRUENDUNG" BLOB Mit dem Benutzer System habe ich einen tablespace angelegt: create tablespace lobs datafile 'lobs.dbf' size 5M extent management local uniform size 1M Dann die Tabelle geändert: alter table Meine_Tabelle move lob (begruendung) store as (tablespace LOBS storage (initial 100k next 100k pctincrease 0) chunk 16k pctversion 10 nocache logging) Bei der Abfragen select begruendung from Meine_Tabelle oder select begruendung from Meine_Tabelle FOR UPDATE kommt die Fehlermeldung: ORA-00932: Inkonsistente Datentypen: NUMBER erwartet, BLOB erhalten Ein Update mit update Meine_Tabelle set begruendung = EMPTY_BLOB() ändert nichts an der Sache. Mapping: <field-descriptor id="16" name="begruendung" column="BEGRUENDUNG" jdbc-type="BLOB" primarykey="false" /> Java: import oracle.sql.BLOB; private BLOB begruendung; Die Infromationen, die in dem BLOB-Feld gespeichert werden sollen habe ich in Form eines Strings. Für die Speicherung in der DB versuche ich daraus ein BLOB zu erzeugen: byte[] blobBites = this.begruendungStr.getBytes(); begruendung = BLOB.empty_lob(); begruendung.setBytes(1,blobBites); Statische Methode BLOB.empty_lob() liefert kein BLOB-Objekt, sondern null zurück. Ich bin mir auch nicht sicher, dass ich für das von dieser Methode gelieferten Blob-Objekt die Methode begruendung.setBytes(1,blobBites) ausführen kann. Ausprobieren kann ich auch nicht, da ich kein BLOB-Objekt erzeugen kann (Es gibt keinen Konstruktor für die BLOB-Klasse new BLOB()) Für die Methode BLOB.createTemporary(Connnection , boolean, int) brauche ich die Connection zu der DB. Da ich aber alle DB-Zugriffe über DAOs verwalte, habe ich nicht wirklich die Connection in meiner Struts-Form. Rein theoretisch kann man sie von DAO mit einer public-Methode holen. Das passt natürlich nicht zu dem Konzept und unsere Erfahrungen sagen, dass die Connection dann auch nicht zuverlässig ist. So lange der Befehl update Meine_Tabelle set begruendung = EMPTY_BLOB() nicht ausgeführt wurde, ist in Java nach dem Lesen des Objektes aus Oracle das Attribut Begrundung = null. Wenn aber das Feld ein EMPTY_BLOB enthält, bekomme ich einen Fehler schon bei Mapping: Caused by: java.lang.IllegalArgumentException: Can not set oracle.sql.BLOB field de……….begruendung to [b at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) at java.lang.reflect.Field.set(Field.java:657)

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...