Comportement bizarre select
Bonsoir,
j'ai un comportement bizzare, lorsque j'essaie de lire une entrée dans une des tables de ma DB.
j'ai ces 2 requêtes préparées (un insert et un select):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| @Override
public void create(Object entity) {
try {
Connection con = ConnectDB.getInstance().getConnection();
String query = "INSERT INTO catégories_articles (PK_id_categories_articles,nom_categories_articles)" + "values (?,?)";
PreparedStatement preparedStmt;
CategorieArticle cat = (CategorieArticle) entity;
int id = cat.getIdCategorieArticle();
String nom = cat.getNomCategorieArticle();
System.out.println(nom);
try {
preparedStmt = con.prepareStatement(query);
preparedStmt.setInt(1, id);
preparedStmt.setString(2, nom);
preparedStmt.executeUpdate();
preparedStmt.close();
} catch (SQLException ex) {
Logger.getLogger(CategorieArticleDAO.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("error create statement: " + ex);
}
} catch (SQLException ex) {
Logger.getLogger(CategorieArticleDAO.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("error create : " + ex);
}
}
/**
* Find, va lire une catégorie d'article via son id et un requête préparée
* SELECT
*
* @param id
* @return CategorieArticle
*/
@Override
public Object read(int id) {
CategorieArticle cat = new CategorieArticle(id);
try (Connection con = ConnectDB.getInstance().getConnection()) {
String query = "SELECT * FROM catégories_articles WHERE PK_id_categories_articles = ?";
try (PreparedStatement preparedStmt = con.prepareStatement(query)) {
preparedStmt.setInt(1, id);
ResultSet res = preparedStmt.executeQuery();
while (res.next()) {
cat.setIdCategorieArticle(res.getInt("PK_id_categories_articles"));
cat.setNomCategorieArticle(res.getString("nom_categories_articles"));
}
preparedStmt.close();
}
} catch (SQLException ex) {
Logger.getLogger(CategorieArticleDAO.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("print 1[" + cat.idCategorieArticle + "," + cat.nomCategorieArticle + "]");
return cat;
}
@Override
public void update(Object entity
) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void delete(Object entity
) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
} |
L'insert après contrôle dans ma DB se fait correctement.
Lorque j'exécute ces tests unitaires:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @Test
public void test1_insert_categorie() throws ErrDoublon {
Controler contr = Controler.getInstance();
contr.addCategorie("Description");
System.out.println("TEST1 - Catégorie ajouté dans la DB.");
}
/**
* test d'un select dans catégories d'articles sur base de l'id
*/
@Test
public void test2_readCategorieById() {
Controler contr = Controler.getInstance();
CategorieArticle cat = contr.loadCategorieById(7);
System.out.println("TEST2 - Catégorie lue dans la DB.");
System.out.println("print 3[" + cat.idCategorieArticle + "," + cat.nomCategorieArticle + "]");
assertEquals(cat.getIdCategorieArticle(), 7);
System.out.println("ID OK");
assertEquals(cat.getNomCategorieArticle(), "Description");
System.out.println("TEST2 - l'objet lu est le bon");
} |
le premier test est bon et le deuxième ne reconnait pas le nom de l'article il est à null.
Code:
assertEquals(cat.getNomCategorieArticle(), "Description");
Par contre aprsè si je n'exécute que le deuxième test, celui-ci passe sans problème