// Cognome e Nome: Cognome, Nome // Numero di matricola: // Data di Nascita: // login su SQL server: // Password su SQL server: import java.sql.*; import java.io.*; class punto3_4 { // subname deve essere sostituito con l'identificatore ODBC creato static String Con_URL = "jdbc:odbc:subname"; public static void main (String args []) //args[0]=C1, args[1]=C2 { try{ Connection con; // caricamento driver Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); // connessione: N deve essere sostituito con il numero del vostro gruppo con =DriverManager.getConnection(Con_URL,"login","password"); // inserire chiamate per creare lo statement PreparedStatement pquery = con.prepareStatement("select distinct CS1.Cognome, CS1.Nome, CS2.Cognome, CS2.Nome, Incontri.occasione, Incontri.dataIncontri from Incontri,CuoriSolitari CS1, CuoriSolitari CS2 where Incontri.CodLui=CS1.CodiceFiscale and Incontri.CodLei=CS2.CodiceFiscale and citta = ? "); pquery.setString(1,args[0]); ResultSet rs1= pquery.executeQuery(); // stampa del risultato while (rs1.next()) { System.out.println("Cognome Cuore 1: " + rs1.getString(1) + " Nome Cuore 1: " + rs1.getString(2) + "Cognome Cuore 2: " + rs1.getString(3) + " Nome Cuore 2: " + rs1.getString(4) + " Occasione: " + rs1.getString(5) + " data: " + rs1.getDate(6)); } pquery.setString(1,args[1]); ResultSet rs2= pquery.executeQuery(); // stampa del risultato while (rs2.next()) { System.out.println("Cognome Cuore 1: " + rs1.getString(1) + " Nome Cuore 1: " + rs1.getString(2) + "Cognome Cuore 2: " + rs1.getString(3) + " Nome Cuore 2: " + rs1.getString(4) + " Occasione: " + rs1.getString(5) + " data: " + rs1.getDate(6)); } // volendo si poteva usare il createStatement. Anche se la soluzione con il preparedStatement e' migliore // Statement st = con.createStatement(); // String query_C1 = "select distinct CS1.Cognome, CS1.Nome, CS2.Cognome, CS2.Nome, Incontri.occasione, Incontri.dataIncontro from Incontri,CuoriSolitari CS1, CuoriSolitari CS2 where Incontri.CodLui=CS1.CodiceFiscale and Incontri.CodLei=CS2.CodiceFiscale and citta='" + args[0] + "' "; // String query_C2 = "select distinct CS1.Cognome, CS1.Nome, CS2.Cognome, CS2.Nome from Incontri,CuoriSolitari CS1, CuoriSolitari CS2, Incontri.occasione, Incontri.dataIncontro where Incontri.CodLui=CS1.CodiceFiscale and Incontri.CodLei=CS2.CodiceFiscale and citta='" + args[1] + "' "; // ResultSet rs = st.executeQuery(query_C1); // stampa del risultato // while (rs.next()) // { // System.out.println("Cognome Cuore 1: " + rs1.getString(1) + " Nome Cuore 1: " + rs1.getString(2) + "Cognome Cuore 2: " + rs1.getString(3) + " Nome Cuore 2: " + rs1.getString(4) + " Occasione: " + rs1.getString(5) + " data: " + rs1.getDate(6)); // } // ResultSet rs2 = st.executeQuery(query_C2); // stampa del risultato // while (rs2.next()) // { // System.out.println("Cognome Cuore 1: " + rs1.getString(1) + " Nome Cuore 1: " + rs1.getString(2) + "Cognome Cuore 2: " + rs1.getString(3) + " Nome Cuore 2: " + rs1.getString(4) + " Occasione: " + rs1.getString(5) + " data: " + rs1.getDate(6)); // } PreparedStatement pquery2 = con.prepareStatement("update Iscrizione " + "set importo= importo* ? " + "where CodiceFiscale in " + "(select CodLui from Incontri where citta = ? " + " union " + "select CodLei from Incontri where citta = ?)"); pquery2.setFloat(1,(float).8); pquery2.setString(2,args[0]); pquery2.setString(3,args[0]); pquery2.execute(); pquery2.setFloat(1,(float).9); pquery2.setString(2,args[1]); pquery2.setString(3,args[1]); pquery2.executeUpdate(); // Versione alternativa. Anche in questo caso era meglio usare il preparedstatement // inserire chiamate per eseguire lo statement di modifica e cancellazione // st.executeUpdate("update Iscrizione set importo= importo* .80 where CodiceFiscale in (select CodLui from Incontri where citta = '" + args[0]+ "' union select CodLei from Incontri where citta ='" + args[0] + "')"); // st.executeUpdate("update Iscrizione set importo= importo* .90 where CodiceFiscale in (select CodLui from Incontri where citta = '" + args[1] + "' union select CodLei from Incontri where citta = '" + args[1] + "')"); // chiusura connessione con.close(); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); } catch (SQLException e) { while( e!=null){ System.out.println("SQLState: " + e.getSQLState()); System.out.println(" Code: " + e.getErrorCode()); System.out.println(" Message: " + e.getMessage()); e = e.getNextException(); } } } }