2016-04-06 5 views
-1

Dies ist natürlich Teile eines größeren Codes. Es wird kompilieren ohne Problem, aber wenn ich diese Methode aufrufen, erhalte ich den FehlerJDBC falsche Syntax bei oder nahe "." executeQuery

"Syntaxfehler nahe oder bei". "" An der Position von stmt.executeQuery (SQL).

Ich würde wirklich die Hilfe schätzen!

private void Component() { 
    try { 
     Statement stmt = con.createStatement(); 
     String SQL = "SELECT component.*, stock.amount_of_component, component.price component.component_type " 
        + "FROM component JOIN stock " 
        + "ON component.id = stock.component_id " 
        + "ORDER BY component.component_type"; 
     ResultSet rs = stmt.executeQuery(SQL); 

     rs.next(); 
     int id = rs.getInt("ID"); 
     int amount_of_component = rs.getInt("Amount"); 
     String name = rs.getString("Name"); 
     double price = rs.getDouble("Price"); 
     String component_type = rs.getString("Type"); 


     System.out.println(" " + id + amount_of_component + " " + name + " " + price + " " + component_type); 

    } catch (SQLException err) 
    { 
     System.out.println(err.getMessage()); 
    } 
} 
+2

ein Komma zwischen 'component.price' fehlt und' component.component_type' – Berger

+0

thank you !! jetzt ist ein anderes Problem aufgetaucht! Ich bekomme nur eine Zeile meiner Tabelle gedruckt und es gibt keinen Header? – gheithen

+0

'rs.next()' liest nur eine Zeile, Sie könnten eine Schleife wie 'while (rs.next())' machen, um alle Zeilen zu lesen. – Berger

Antwort

1

Typo, ein Komma in der Abfrage zwischen component.price und component.component_type fehlt:

SELECT component.*, stock.amount_of_component, component.price, component.component_type 
FROM component JOIN stock 
ON component.id = stock.component_id 
ORDER BY component.component_type 

Edit: das gesamte Ergebnismenge zu lesen, diesen Zyklus setzen statt rs.next()

while(result.next()) { 
    int id = rs.getInt("ID"); 
    int amount_of_component = rs.getInt("Amount"); 
    String name = rs.getString("Name"); 
    double price = rs.getDouble("Price"); 
    String component_type = rs.getString("Type"); 
    System.out.println(" " + id + amount_of_component + " " + name + " " + price + " " + component_type); 
} 

Edit2: den Header zu drucken, müssen Sie es manuell tun, indem Sie eine System.out.println(" id amount_of_component name price component_type "); vor, während setzen.

+0

danke !! jetzt ist ein anderes Problem aufgetaucht! Ich bekomme nur eine Zeile meiner Tabelle gedruckt und es gibt keinen Header? – gheithen

+0

@SarahGheith Siehe die bearbeitete Antwort. –

0

Sie verfehlten ein Komma zwischen 'component.price' und 'component.component_type'

+0

danke !! jetzt ist ein anderes Problem aufgetaucht! Ich bekomme nur eine Zeile meiner Tabelle gedruckt und es gibt keinen Header? – gheithen

+0

Sie müssen die Ergebnismenge durchlaufen. Derzeit extrahieren Sie nur die erste Zeile. –

Verwandte Themen