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