Truc.java *
Transcription
Truc.java *
/** Insère la personne dans la base de donnée; retour de l'identifiant qui lui a été attribué. Version avec Statement et recherche de la valeur maximale de la clé. Attention: ne fonctionne pas avec des valeurs contenant des ' . Remarques: ‐ Pose des problèmes en cas d'accès concurrents à la base. ‐ Seule manière de faire avec Access. */ public static int insert0 (Personne p) { int id = ‐1; try { Connection con = ConnexionBase.get(); String sql = "INSERT INTO Personne (Nom, Prenom, Adresse, NoPostal, Localite) VALUES ('" + p.getNom() + "', '" + p.getPrenom() + "', '" + p.getAdresse() + "', '" + p.getNoPostal() + "', '" + p.getLocalite() + "')"; Statement stmt = con.createStatement(); stmt.executeUpdate(sql); stmt.close(); Statement stmtMax = con.createStatement(); ResultSet rs = stmtMax.executeQuery("SELECT MAX(Id) FROM Personne"); rs.next(); id = rs.getInt(1); stmtMax.close(); } catch (SQLException e) {System.out.println("PersonneDao.insert0(): " + e.getMessage()); e.printStackTrace();} return id; } // insert0 private static String rep (String s) {return s.replace("'", "\\'");} /* Remplace les ' par le caractère d'échappement \' */ /** Insère la personne dans la base de donnée; retour de l'identifiant qui lui a été attribué. Version avec Statement et getGeneratedKeys(). */ public static int insert1 (Personne p) { int id = ‐1; try { Connection con = ConnexionBase.get(); String sql = "INSERT INTO Personne (Nom, Prenom, Adresse, NoPostal, Localite) VALUES ('" + rep(p.getNom()) + "', '" + rep(p.getPrenom()) + "', '" + rep(p.getAdresse()) + "', '" + rep(p.getNoPostal()) + "', '" + rep(p.getLocalite()) + "')"; Statement stmt = con.createStatement(); stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); ResultSet rs = stmt.getGeneratedKeys(); rs.next(); id = rs.getInt(1); stmt.close(); } catch (SQLException e) {System.out.println("PersonneDao.insert1(): " + e.getMessage()); e.printStackTrace();} return id; } // insert1 /** Insère la personne dans la base de donnée; retour de l'identifiant qui lui a été attribué. Version avec PreparedStatement et getGeneratedKeys(). */ public static int insert (Personne p) { int id = ‐1; try { Connection con = ConnexionBase.get(); String sql = "INSERT INTO Personne (Nom, Prenom, Adresse, NoPostal, Localite) VALUES (?, ?, ?, ?, ?)"; PreparedStatement stmt = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); stmt.setString(1, p.getNom()); stmt.setString(2, p.getPrenom()); stmt.setString(3, p.getAdresse()); stmt.setString(4, p.getNoPostal()); stmt.setString(5, p.getLocalite()); stmt.executeUpdate(); ResultSet rs = stmt.getGeneratedKeys(); rs.next(); id = rs.getInt(1); stmt.close(); } catch (SQLException e) {System.out.println("PersonneDao.insert(): " + e.getMessage()); e.printStackTrace();} return id; } // insert