Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Programma JDBC

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    0

    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 (fatta tramite ConnectionPool anche se non credo sia fatta in maniera completamente corretta), 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),
    per esempio, chiedere all'utente quale operazione vuole fare tra
    1) Inserimento
    2) Modifica
    3) Visualizzare qualcosa (come la query già implementata)
    4) Uscire
    e quindi nel caso 1 chiedere all'utente di inserire i dati e poi aggiungerli al database con la query, non so come fare questa cosa.
    Potreste aiutarmi a risolvere questo problema? Tra pochi giorni ho l'esame e non so più come fare

    vi allego anche il codice qui sotto.

    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);
    }
    }
    
     }

  2. #2
    Sinceramente oltre che aver fatto un fritto misto avrei strutturato in altro modo.
    Se hai fatto la connessione nel main tutta la parte sopra è totalmente inutile
    da dopo
    codice:
    public class ProgettoCanile{
    a prima poco di
    codice:
    public static void main(String args[])throws Exception{
    è tutto codice che non viene mai richiamato e paradossalmente potresti cancellare tutto e continuerebbe a funzionare ugualmente.

    Scusa hai la minima idea di quello che hai scritto?

    Dovresti fare una classe Main che gestisce la scelta, una classe che gestisce solo la connessione col Database e una classe che richiede i dati e li manda alla boundary (classe DB).
    Sarebbe il giusto modo per una corretta programmazione ad oggetti

    Ciao.
    Ultima modifica di schumy2000; 01-02-2018 a 16:18
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Quote Originariamente inviata da crik97 Visualizza il messaggio
    Il problema è che non so come fare il resto e come farlo tramite un menù (switch case),
    per esempio, chiedere all'utente quale operazione vuole fare tra
    1) Inserimento
    2) Modifica
    3) Visualizzare qualcosa (come la query già implementata)
    4) Uscire
    e quindi nel caso 1 chiedere all'utente di inserire i dati e poi aggiungerli al database con la query, non so come fare


    Cioè non sai come leggere l'input utente o come impostare le query? Perchè questo c'è da fare.

    Cioè per leggere le scelte del menù basta un banale ( nel tuo caso )

    codice:
    char c = (char) System.in.read();
    Se ti serve qualcosa di più sofisticato usa Scanner o BufferedReader.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.