2016-07-18 17 views
-2

Ich versuche Java-Methode für Web-Service zu implementieren, die Daten aus der Tabelle abrufen und das Ergebnis im JSON-Format zurückgeben soll. Dazu verwende ich die Funktion json_agg(), die das Abfrageergebnis in json umwandelt, das ich anzeigen möchte, aber es wird bisher im falschen Format angezeigt. Hier ist die Methode selbst:Korrekte Anzeige konvertiert SQL-Ergebnismenge in JSON

public String GetRowsFromTable() throws SQLException { 

    Connection connection = null; 
    String result = ""; 
    try { 
     connection = Connection.getConnection(); 
     PreparedStatement prepStmt = conn.prepareStatement("SELECT json_agg(table1) FROM table"); 
     ResultSet rs = prepStmt.executeQuery(); 
     result += rs; 
     System.out.println(rs); 
    } catch (SQLException sqlex) { 
     sqlex.printStackTrace(); 
    } finally { 
     connection.close(); 
    } 

    return result; 
} 

Die Konsole zeigt das folgende Ergebnis:

org.postgresql.jdb[email protected] 

Jede Hilfe würde geschätzt.

+0

* aber es zeigt in falschem Format bisher * bedeutet dies, absolut nichts. –

+1

auch das ist die Standardausgabe von '.toString()' auf 'Object' und nicht die richtige Sache, um 'ResultSet' aufzurufen, schauen Sie sich einfach den Quelltext für' ResultSet' an, es macht nur den Standard auf 'Object' . Ich denke, du musst die Dokumentation darüber lesen, was du zu tun versuchst, oder wenn du es bereits getan hast. –

Antwort

2

Sie müssen durch die ResultSet iterieren und jede Spalte abrufen. Die ResultSet Instanz ist nicht Ihr tatsächliches Ergebnis ist es ein Container für das Ergebnis. Ihre Abfrage gibt eine Spalte zurück, so dass Sie über den Index 1 auf den Inhalt zugreifen können (JDBC-Spaltenindizes beginnen bei 1, nicht wie in Java üblich). Um das Ergebnis auf die nächste Zeile zu bewegen Sie verwenden müssen next()

ResultSet rs = prepStmt.executeQuery(); 
if (rs.next()) { 
    System.out.println(rs.getString(1)); 
} 

Normalerweise würden Sie eine while() Schleife verwenden, um alle Zeilen durchlaufen in der ResultSet aber Ihre Abfrage wird wieder nur eine einzige Zeile aufgrund der Aggregation so das ist nicht nötig. Sind Sie sicher, Sie wirklich wollen alle Zeilen der Tabelle als ein einziges großes JSON-Dokument. Was ist, wenn die Tabelle eine Million Zeilen enthält?

Dies alles wird in den Java-JDBC-Tutorial erklärt:

+0

danke für Hilfe und Lernquellen. – Dozent