2017-12-15 8 views
0

Ich habe ein solches Programm, die Verbindung zur Datenbank und dann senden Abfrage und erhalten Sie die Antwort. Alles war in Ordnung, als ich die Hauptklasse verbunden und abgefragt habe, aber mein Programm funktioniert nicht, wenn ich versuche, 3 verschiedene Klassen zu erstellen. Wie kann ich connect-Funktion von der Abfrage aufrufen und dann Abfrage-Funktion von main aufrufen?Rufen Sie eine Methode aus einer anderen

public class App { 

public static void connect() throws IOException { 

    Connection c = null; 
    try { 
     Class.forName("org.postgresql.Driver"); 
     c = DriverManager.getConnection(dbName, userName, password); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
     System.exit(0); 
    } 
    System.out.println("Opened database successfully"); 
} 

public static void query() { 

    Connection c = connect(); // call function - error 
    Statement stmt = c.createStatement(); 
    stmt = c.createStatement(); 
    String query = "Select count(distinct country) sum from customers"; 
    ResultSet rs = stmt.executeQuery(query); 
    query = "SELECT * from country"; 
    rs = stmt.executeQuery(query); 
    while (rs.next()) { 
     String country = rs.getString("country"); 
     String netamount = rs.getString("netamount"); 
     System.out.println(country + " " + netamount); 
     System.out.println(); 
    } 
    rs.close(); 
    stmt.close(); 
    c.close(); 
} 

public static void main(String[] args) { 

    query(); // call function 
} 

Antwort

0

So Ihre Funktion muss eine Verbindung zur Rückkehr

Versuche Umschreiben es wie diese

public static Connection connect() throws IOException { 
BufferedReader br = new BufferedReader(new FileReader("login.txt")); 

dbName = br.readLine(); 
userName = br.readLine(); 
password = br.readLine(); 

Connection c = null; 
try { 
    Class.forName("org.postgresql.Driver"); 
    c = DriverManager.getConnection(dbName, userName, password); 
} catch (Exception e) { 
    e.printStackTrace(); 
    System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
    System.exit(0); 
} 
System.out.println("Opened database successfully"); 
return c; 

}

dann Ihre Abfrage-Funktion wie erwartet funktionieren wird vor allem der Linie

Connection c = connect(); 
+0

Wenn dies für Sie funktioniert, lassen Sie mich bitte Feedback geben ... Ich kann Ihnen helfen, wenn Sie noch irgendwelche Herausforderungen haben – vofili

Verwandte Themen