Wert des Attributs vom Typ SDO_GEOMETRY anzeigen

8

Ich versuche, JDBC zu verwenden, um Zeilen in einer Tabelle anzuzeigen, die in einer Oracle 11g-Datenbank erstellt wird. Das Problem ist, dass es mir nicht gelingt, den Wert des Attributs "SHAPE" vom Typ "SDO_GEOMETRY" mithilfe des folgenden Codes zu ermitteln , was übrigens gut funktioniert, wenn es um die anderen Attribute der Tabelle geht:

%Vor%

Hier sind die DDL-Anweisungen, die zum Erstellen der testGeo-Tabelle und einiger Testdaten verwendet werden.

%Vor%     
Neo 02.02.2016, 11:12
quelle

4 Antworten

8

Das Problem selbst wird durch die Tatsache verursacht, dass Sie versuchen, ein komplexes Objekt, das ein benutzerdefiniertes Oracle-Objekt ist, mit einer eigenen Zuordnungsbibliothek abzurufen. Der SDO_GEOMETRY -Typ wie verwendet Hier in Ihrer Beispielanweisung:

%Vor%

ist Teil des Oracle Spatial-Pakets und basiert auf benutzerdefinierten Objekten. Diese können nicht so einfach gelesen werden wie grundlegende SQL-Spalten wie VARCHAR oder NUMBER , weshalb Ihr Aufruf getString("shape") keine Ergebnisse liefert.

Die Lösung besteht darin, das von Oracle bereitgestellte JGeometry-Paket zu verwenden genau für diesen Zweck entworfen:

  

Eine Java-Klasse, die den Oracle-Spatial-SQL-Typ MDSYS.SDO_GEOMETRY abbildet.   Unterstützt nur Oracle JDBC Driver Version 8.1.7 oder höher. Bietet   grundlegende Zugangsfunktionen zu den in Oracle Spatial verwendeten Geomerien   Datenbank.

Mit dieser Bibliothek auf Klassenpfad können Sie die benutzerdefinierten Java-Mappings verwenden, um Ihr Shape-Objekt zu bearbeiten:

%Vor%     
Gergely Bacso 05.02.2016, 10:29
quelle
5

Sie sollten die JGeometry Klasse in der Oracle Spatial Java-Paket dafür. Sie können den räumlichen Typ wie folgt aufrufen:

%Vor%

Wenn Sie die Geometrie wieder in die Datenbank schreiben müssen, können Sie Folgendes versuchen:

%Vor%

Hinweis: Informationen zur Verwendung der Klassen-APIs finden Sie in der JGeometry-Dokumentation.

    
Sameer Mirji 05.02.2016 10:54
quelle
3

Sie können etwas wie

verwenden %Vor%

Sie erhalten jedoch eine Zeile für jede Zahl in der Form.

    
Gary Myers 03.02.2016 05:12
quelle
2

Ich glaube, der Fehler liegt bei getString() , weil SDO_GEOMETRY nicht in eine Zeichenfolge umgewandelt werden kann. Ich habe keine Kenntnisse von OracleDec, um ehrlich zu sein, also ist es nur eine Vermutung.

Haben Sie getInt() oder getByteArray() oder ähnliche Optionen probiert?

Beim Abrufen von Daten aus der Datenbank gibt es viele Möglichkeiten.

    
Chris Arenz 05.02.2016 07:54
quelle

Tags und Links