Programma JDBC

di il
5 risposte

Programma JDBC

Salve, sono nuovo e non so se questa è la sezione giusta. Sto facendo un progetto per quanto riguarda un Database per l'università. L'ho creato con MySQL e per motivi didattici devo creare una programma java, con jdbc, per connettermi al database e fare operazioni di inserimento, cancellazione e modifica dei dati. La parte in cui devo connettere al database l'applicazione java l'ho fatta e funziona, ed ho anche aggiunto una query e mi funziona tutto. Il problema è che non so come fare il resto e come farlo tramite un menù (switch case). Potreste aiutarmi a risolvere questo problema? Tra pochi giorni ho l'esame e non so più come fare

Vi allego anche gli screen di quello che ho fatto.
Allegati:
5
5

4
4

3
3

2
2

1
1

5 Risposte

  • Re: Programma JDBC

    crik97 ha scritto:


    Vi allego anche gli screen di quello che ho fatto.
    Ma non puoi postare il testo del codice ... invece di screenshot (spesso poco o non leggibili)?
  • Re: Programma JDBC

    Questo è il codice


    import java.sql.*;
    import java.util.LinkedList;
    import java.util.List;

    public class ProgettoCanile {

    private static List<Connection> freeDbConnections;

    static {
    freeDbConnections = new LinkedList<Connection>();

    try {
    Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
    System.out.println("DB driver not found!"+ e);
    }
    }


    private static Connection createDBConnection() throws SQLException
    {
    Connection newConnection = null;
    String ip = "localhost";
    String port = "3306";
    String db = "canile";
    String username = "root";
    String password = "basidati";

    newConnection = DriverManager.getConnection("jdbc:mysql://"+ ip+":"+ port+"/"+db, username, password);

    newConnection.setAutoCommit(false);

    return newConnection;
    }


    public static synchronized Connection getConnetion() throws SQLException
    {
    Connection connection;

    if(! freeDbConnections.isEmpty()) {
    connection = (Connection) freeDbConnections.get(0);
    ProgettoCanile.freeDbConnections.remove(0);

    try {
    if (connection.isClosed())
    connection = ProgettoCanile.getConnetion();
    } catch (SQLException e) {
    if(connection != null)
    connection.close();
    connection = ProgettoCanile.getConnetion();
    }
    } else connection = ProgettoCanile.createDBConnection();

    return connection;
    }


    public static synchronized void releaseConnection(Connection connection) {
    ProgettoCanile.freeDbConnections.add(connection);
    }



    public static void main(String args[]) throws Exception {
    try {
    String url = "jdbc:mysql://localhost:3306/canile";
    Connection con = DriverManager.getConnection(url,"root", "basidati");
    System.out.println("Connessione OK \n");

    Statement st = con.createStatement();
    String sql = "SELECT * FROM Cane";
    ResultSet rs = st.executeQuery(sql);
    while (rs.next()) {
    String Microchip = rs.getString("microchip");
    int AnnoN = rs.getInt("annon");
    String Sesso = rs.getString("sesso");
    String Taglia = rs.getString("taglia");
    String Colore = rs.getString("colore");
    String Pelo = rs.getString("pelo");
    String SegniP = rs.getString("segnip");

    System.out.printf("%s , %d , %s , %s , %s , %s , %s \n", Microchip, AnnoN, Sesso, Taglia, Colore, Pelo, SegniP);
    }

    if (rs != null) rs.close();
    if(st != null) st.close();
    con.close();
    }

    catch(Exception e) {
    System.out.println("Connessione fallita \n");
    System.out.println(e);
    }



    try {
    String url = "jdbc:mysql://localhost:3306/canile";
    Connection con = DriverManager.getConnection(url,"root", "basidati");
    System.out.println("Connessione OK \n");

    Statement st = con.createStatement();
    String sql = "SELECT microchip,annon FROM Cane";
    ResultSet rs = st.executeQuery(sql);
    while (rs.next()) {
    String Microchip = rs.getString("microchip");
    int AnnoN = rs.getInt("annon");

    System.out.printf("%s , %d \n", Microchip, AnnoN);
    }

    if (rs != null) rs.close();
    if(st != null) st.close();
    con.close();
    }

    catch(Exception e) {
    System.out.println("Connessione fallita \n");
    System.out.println(e);
    }

    }



    }
  • Re: Programma JDBC

    Anche peggio: usa i tag apposta per postare il codice (tag CODE, li trovi con l' "Editor completo & Anteprima"), che MANTENGONO LA FORMATTAZIONE, se no non si capisce una cippa!

    In ogni caso, cosi' come fai la SELECT, puoi fare la INSERT, la UPDATE e la DELETE.
  • Re: Programma JDBC

    Scusate, non ho mai usato forum. Spero che cosi vada bene. Comunque il mio dilemma è come fare queste insert chiedendo i dati all'utente e poi richiamare il tutto, incluso questa query già fatta, tramite lo switch case.


    import java.sql.*;
    import java.util.LinkedList;
    import java.util.List;
    
    public class ProgettoCanile {
    	
    	private static List<Connection> freeDbConnections;
    	
    	static {
    		freeDbConnections = new LinkedList<Connection>();
    		
    		try {
    			Class.forName("com.mysql.jdbc.Driver");		
    		} catch (ClassNotFoundException e) {
    			System.out.println("DB driver not found!"+ e);
    		}
    	}
    	
    	
    private static Connection createDBConnection() throws SQLException
    {
    	Connection newConnection = null;
    	String ip = "localhost";
    	String port = "3306";
    	String db = "canile";
    	String username = "root";
    	String password = "basidati";
    	
    	newConnection = DriverManager.getConnection("jdbc:mysql://"+ ip+":"+ port+"/"+db, username, password);
    	
    	newConnection.setAutoCommit(false);
    	
    	return newConnection;
    }
    
    
    public static synchronized Connection getConnetion() throws SQLException
    {
    	Connection connection;
    	
    	if(! freeDbConnections.isEmpty()) {
    			connection = (Connection) freeDbConnections.get(0);
    			ProgettoCanile.freeDbConnections.remove(0);
    			
    			try {
    					if (connection.isClosed())
    						connection = ProgettoCanile.getConnetion();
    			} catch (SQLException e) {
    					if(connection != null)
    							connection.close();
    					connection = ProgettoCanile.getConnetion();
    			}
    	} else connection = ProgettoCanile.createDBConnection();
    	
    		return connection;
    }
    
    
    public static synchronized void releaseConnection(Connection connection) {
    		ProgettoCanile.freeDbConnections.add(connection);
    }
    	
    	
    	
    public static void main(String args[]) throws Exception {
    	try {
    		 String url = "jdbc:mysql://localhost:3306/canile";
    		 Connection con = DriverManager.getConnection(url,"root", "basidati");
    		 System.out.println("Connessione OK \n");
    		 
    		 Statement st = con.createStatement();
    		 String sql = "SELECT * FROM Cane";
    		 ResultSet rs = st.executeQuery(sql);
    		 while (rs.next()) {
    			 String Microchip = rs.getString("microchip");
    			 int AnnoN = rs.getInt("annon");
    			 String Sesso = rs.getString("sesso");
    			 String Taglia = rs.getString("taglia");
    			 String Colore = rs.getString("colore");
    			 String Pelo = rs.getString("pelo");
    			 String SegniP = rs.getString("segnip");
    			 
    			 System.out.printf("%s , %d , %s , %s , %s , %s , %s \n", Microchip, AnnoN, Sesso, Taglia, Colore, Pelo, SegniP);	 
    		 } 
    		 
    		 if (rs != null) rs.close();
    		 if(st != null) st.close();
    		 con.close();
    	}		 
    	
    catch(Exception e) {
    	System.out.println("Connessione fallita \n");
    	System.out.println(e);
    	}
    	
    
    
    try {
    	 String url = "jdbc:mysql://localhost:3306/canile";
    	 Connection con = DriverManager.getConnection(url,"root", "basidati");
    	 System.out.println("Connessione OK \n");
    	 
    	 Statement st = con.createStatement();
    	 String sql = "SELECT microchip,annon FROM Cane";
    	 ResultSet rs = st.executeQuery(sql);
    	 while (rs.next()) {
    		 String Microchip = rs.getString("microchip");
    		 int AnnoN = rs.getInt("annon");
    		 
    		 System.out.printf("%s , %d \n", Microchip, AnnoN);	 
    	 } 
    	 
    	 if (rs != null) rs.close();
    	 if(st != null) st.close();
    	 con.close();
    }		 
    
    catch(Exception e) {
    System.out.println("Connessione fallita \n");
    System.out.println(e);
    }
    
    }
    
    
    
    	}
  • Re: Programma JDBC

    crik97 ha scritto:


    Scusate, non ho mai usato forum. Spero che cosi vada bene. Comunque il mio dilemma è come fare queste insert chiedendo i dati all'utente e poi richiamare il tutto, incluso questa query già fatta, tramite lo switch case.
    Il punto/problema è che per il codice che hai mostrato, hai fatto più select di fila tutto nel main, senza peraltro "modellare" in classi le entità trattate.
    Dovresti iniziare a separare meglio le cose, strutturare il codice in modo da avere un metodo per ciascuna operazione su DB, magari in una classe separata rispetto a quella dove hai il main e dove presumibilmente gestirai il menù, scelta, ecc...
    E' una questione più di "design" questa, che dovresti apprendere meglio.

    Inoltre, lascia perdere quella gestione del "pool" di Connection che hai abbozzato in modo "fai-da-te". Nelle applicazioni "console" come la tua, ci può essere anche solo una singola, unica Connection per tutto quanto.
Devi accedere o registrarti per scrivere nel forum
5 risposte