Domanda usare mysql da java

gerasia

Utente Electrum
30 Gennaio 2018
288
72
52
176
salve a tutti, per un progetto universitario devo sviluppare un software.
parte di questo software consiste nell'accedere ad un database in locale ed effettuare delle query.
prendendo spunto da internet ho scritto questo codice (uso un singleton per l'accesso e la gestione del database).

Java:
import java.sql.*;


public class DataBase {
    private static DataBase instance = new DataBase();
    
    private Connection connect;
    private Statement statement;
    private ResultSet rs;
    
    private DataBase() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");   
        }catch(ClassNotFoundException e1) {
            e1.printStackTrace();
        }
        
        try {
            connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/voti?user=*******&password=******");
        } catch(SQLException e) {
            e.printStackTrace();
        }
    }
    
    public static synchronized DataBase getConnection() {
        if(instance == null) instance = new DataBase();
        return instance;
    }
    public ResultSet query(String sql) {
        try {
            statement = connect.createStatement();
            rs=statement.executeQuery(sql);
        }catch(SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }
    
}

di seguito invece allego la classe per il test

Java:
import java.sql.*;

public class Test {

    public static void main(String[] args) {
        DataBase db = DataBase.getConnection();
        
        String sql = "select * from miei_voti ";

        ResultSet rs = db.query(sql);
        
        try {
            rs.beforeFirst();
            do {
                String row= rs.getString("materia")+" "+rs.getString("voto");
                System.out.println(row);
            }while(rs.next());
        }catch(Exception e) {
            e.printStackTrace();
        }
    }

}



questo codice però da un'infinità di exception.
Qualcuno magari sarebbe così gentile da dirmi dove sbaglio?
 
Ultima modifica:
Ciao, se magari mi posti lo stackTrace degli errori che ti escono, posso darti una mano.
Messaggio unito automaticamente:

Io ho provato il tuo codice utilizzando un mio DB con una tabella di nazioni, funziona correttamente con qualche accorgimento:
Classe database:
Java:
import java.sql.*;


public class DataBase {
    private static DataBase instance = new DataBase();

    private Connection connect;
    private Statement statement;
    private ResultSet rs;

    private DataBase() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        }catch(ClassNotFoundException e1) {
            e1.printStackTrace();
        }

        try {
            connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/joomla?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","root","");
        } catch(SQLException e) {
            e.printStackTrace();
        }
    }

    public static synchronized DataBase getConnection() {
        if(instance == null) instance = new DataBase();
        return instance;
    }
    public ResultSet query(String sql) {
        try {
            statement = connect.createStatement();
            rs=statement.executeQuery(sql);
        }catch(SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }

}

classe test con main:

Java:
import java.sql.*;

public class Test {

    public static void main(String[] args) {
        DataBase db = DataBase.getConnection();

        String sql = "select * from nazioni";

        ResultSet rs = db.query(sql);

        try {
            rs.beforeFirst();
            while(rs.next()){
                String row= rs.getString("codice_istat")+" "+rs.getString("denominazione");
                System.out.println(row);
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }

}

Assicurati comunque di aver importato com.mysql.cj.jdbc.Driver (scaricabile qui) nella struttura del progetto.

Buona serata.