JDBC-соединение в Java с Eclipse (когда метод вызывает метод) - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь подключиться к моей БД с помощью JDBC. Я хотел сделать метод для подключения и другой метод для выбора данных. Я получаю красную линию в Eclipse на «Connection con = connectDB ();» часть. (См. Также в приложении) Кто-нибудь может дать мне совет?

public class DBJdbc {</p> <pre> //Statement stmt = null; // connecting to DB public void connectDB() { //Connection con = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://****/SAC?useSSL=false&serverTimezone=UTC", "***", "***"); } catch(SQLException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); } } // a method for selecting DB public static void select() { //connectDB(); String sql = "SELECT * from SAC_SUR"; try(Connection con = connectDB(); // I'm getting a red line here) PreparedStatement pstmt = con.prepareStatement(sql)){ Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql); while(rs.next()) { int id = rs.getInt(1); String name = rs.getString(2); System.out.println("Id = " + id + "name = " + name); } //while } catch(SQLException e) { System.out.println(e.getMessage()); } }

красная линия здесь !!!

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы пытаетесь вызвать нестатический метод в статической области, что не разрешено в Java. Поэтому я сделал этот метод статическим и возвращал соединение с базой данных.

Пожалуйста, обновите приведенный ниже метод в своем коде. Это решит вашу проблему.

public static Connection connectDB() { 
    Connection con = null; 
    try { 
        Class.forName("com.mysql.cj.jdbc.Driver"); 
        con = DriverManager.getConnection("jdbc:mysql://****/SAC?useSSL=false&serverTimezone=UTC", "", ""); 
    } catch(SQLException e) { 
        e.printStackTrace(); 
    } catch(ClassNotFoundException e) { 
        e.printStackTrace(); 
    } 
    return con; 
}
0 голосов
/ 13 ноября 2018

Метод connectDB () имеет тип void и ничего не возвращает, но когда вы вызываете метод, вы присваиваете его переменной con. Поэтому вам нужно изменить тип возвращаемого значения connectDb на тип соединения.

public Connection connectDB() {            

    Connection con = null;

    try { 
        Class.forName("com.mysql.cj.jdbc.Driver"); 

         con = DriverManager.getConnection("jdbc:mysql://****/SAC?useSSL=false&serverTimezone=UTC", "***", "***");
    }
    catch(SQLException e) { 
        e.printStackTrace();
    }
    catch(ClassNotFoundException e) {
        e.printStackTrace();
    }

return con;
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...