Java-соединение с базой данных MySql, NullPointerException - PullRequest
0 голосов
/ 09 июня 2018

Я хочу подключиться к серверу MySql с Java (без установки дополнительного расширения), и я получаю сообщение об ошибке «java.lang.NullPointerException».Вот мои коды Main:

package sqlconnect;
public class SQLcONNECT {
public static void main(String[] args) {
    DBConnect connect = new DBConnect();
    connect.getData();
    }    
}

и DBConnect:

package sqlconnect;
//https://dev.mysql.com/downloads/connector/j/
 import java.sql.*;

public class DBConnect {
private Connection  con; 
private Statement  st;
private  ResultSet  rs; 
String Query = "SELECT * FROM uczniowie;" ; 
public void DBConnect() 
{
    try{
        Class.forName("com.mysql.jdbc.Driver") ; 
        con = DriverManager.getConnection("jdbc:mysql://serwer:port/BaseName","login","passwd"); 
    }catch(Exception ex){
        System.err.println(ex);
    }
}

public void getData()  
{
    try
    {
        st = con.createStatement();
        rs = st.executeQuery(Query);
        System.out.println("Rows from Table:");
        while(rs.next())
        {               
            String Uczen = rs.getString("Uczen"); 
            String CzyZda = rs.getString("CzyZda");
            String Ocena = rs.getString("Ocena");
            System.out.println("Uczen: " + Uczen +"  "+ "CzyZda: "+ CzyZda+"Ocena: "+Ocena);   
        }
    }
    catch(Exception  ex)
    {
        System.err.println(ex);
    }
} }

В чем может быть проблема, и что я могу сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 09 июня 2018
public void DBConnect() 

Это не конструктор: это обычный метод.Это никогда не вызывается, потому что вы не вызываете его явно.

Удалите void.


Кроме того, не перехватывайте Exception.Просто добавьте throws Exception (или, надеюсь, более конкретное исключение) к сигнатуре метода.В противном случае вы можете получить недопустимый непригодный экземпляр класса.

public DBConnect() throws Exception 
{
    Class.forName("com.mysql.jdbc.Driver") ; 
    con = DriverManager.getConnection("jdbc:mysql://serwer:port/BaseName","login","passwd"); 
}
...