Zum Inhalt springen

Probleme mit der Umstellung auf Oracle


TDM

Empfohlene Beiträge

Hallo,

Ich habe mit einer Findfunktion für eine Datenbank Probleme. In MySQL funktioniert diese aber.

In folgendem Abschnitt ist der Fehler:

Statement stm = null;

            try {

                stm = DbConnection.getConnection().createStatement();

                System.out.println(stm == null);

                ResultSet rs = stm.executeQuery(query);

                while (rs.next()) {

                    HafelObject ho = createHafelObject(clazz);

                    if (ho != null) {

                        Map<String, Object> map = new HashMap<String, Object>();

                        String[] cols = ho.getColumns();

                        for (int i = 0; i < cols.length; i++) {

                            map.put(cols[i], rs.getObject(cols[i]));

                            System.out.println(cols[i] + ":" + rs.getObject(cols[i]));

                        }

                        ho.setValues(map);

                        c.add(ho);

                    }

                }
query ist ein String und clazz ist eine Class-Instanz. Problem an der Sache ist folgendes: In der Zeile
ResultSet rs = stm.executeQuery(query);

wird rs mit MySQL belegt. Bei Oracle ist dies aber null.

Bisher habe ich den Treiber ojdbc14.jar im Projekt (früher den MySQL-connector)

Brauch ich irgendeine andere Klasse / Funktion um das mit Oracle zu realisieren ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oracle 10g

Ich habs jetzt schon mit OracleResultSet probiert - geht aber auch nicht.

In den Metadaten sind zumindest die SpaltenNamen drin - also kann es daran auch nicht liegen oder ?!

Irgendwie will der die Daten aber nicht reinschreiben

java.sql.SQLException: ResultSet.next wurde nicht aufgerufen

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)

at oracle.jdbc.driver.OracleResultSetImpl.getObject(OracleResultSetImpl.java:833)

at oracle.jdbc.driver.OracleResultSet.getObject(OracleResultSet.java:1547)

...

Link zu diesem Kommentar
Auf anderen Seiten teilen

java.sql.SQLException: ResultSet.next wurde nicht aufgerufen

Dieser Satz deutet ja daraufhin das er nicht in die while Schleife reinläuft.

Allerdings kann ich in dem Code nicht erkennen warum er das nicht tun sollte.

Das laden mit dem Class.forName("oracle.jdbc.driver.OracleDriver"); funktioniert ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn der Treiber nicht funktionieren würde, hätte ich ja keine Spaltennamen oder ?

Da bin ich mir nämlich nicht so sicher. Man kann ja auch Alias namen in SQL vergeben beim Select und diese kann ich dann auch im ResultSet ansprechen.

Daher könnte es auch sein das die Spaltennamen aus deiner Query genommen wurden

Link zu diesem Kommentar
Auf anderen Seiten teilen

Daher könnte es auch sein das die Spaltennamen aus deiner Query genommen wurden

Bei Select * From tab z.B. hab ich keine Spaltennamen im Query :/

Schon mal deine Query in einem anderen Interface zur Datenbank ausprobiert?

Ich wünschte ich würde eins finden, was geht :rolleyes:

Vielleicht hast du da ja einen Mysql-Dialekt drin, den Oracle nicht mag.

Je nach Treibertyp wird ein anderer Dialekt benutzt. Das Query hab ich mir ausgebenlassen und manuell geprüft - das ist OK

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiß zwar nicht was ich gemacht hab, aber jetzt gehts...


Statement stmt = null;

             ResultSet rs  = null;

            try {

    			stmt = DbConnection.getConnection().createStatement();

    			rs = stmt.executeQuery(query);

                while (rs.next()) {

                    HafelObject ho = createHafelObject(clazz);

                    if (ho != null) {

                        Map<String, Object> map = new HashMap<String, Object>();

                        String[] cols = ho.getColumns();

                        for (int i = 0; i < cols.length; i++) {

                            map.put(cols[i], rs.getObject(cols[i]));

                        }

                        ho.setValues(map);

                        c.add(ho);

                    }

                }

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