Вызов одного метода из другого

0

У меня есть такая программа, которая подключается к базе данных, а затем посылает запрос и получает ответ. Все было в порядке, когда у меня было подключение и запрос в основном классе, но моя программа не работает, когда я пытаюсь создать 3 разных класса. Как я могу вызвать функцию соединения из запроса, а затем вызвать функцию запроса из main?

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
}
Теги:
call
jdbc

1 ответ

0
Лучший ответ

Таким образом, ваша функция должна вернуть соединение

Попробуйте переписать его так

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;

}

Тогда ваша функция запроса будет работать как ожидалось, особенно линия

Connection c = connect();
  • 0
    если это сработало для вас, пожалуйста, дайте мне обратную связь ... Я могу помочь, если у вас все еще есть какие-либо проблемы

Ещё вопросы

Сообщество Overcoder
Наверх
Меню