Supprimer une ligne d'un tableau?

Résolu/Fermé
Nox972 Messages postés 21 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 14 août 2015 - 7 août 2015 à 20:39
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 14 août 2015 à 19:40
Bonjour,

Je travaille sur Netbeans et PHPadmin, je voudrais sélectionner une ligne de mon tableau avec ma souris et appuyer sur le bouton supprimer pour le supprimer de façon instantanée.



int ligneSelectionne = TableOutil.getSelectedRow();
String outil = TableOutil.getValueAt(ligneSelectionne, 0).toString();
PreparedStatement stmt = null;
String wql = "DELETE FROM `outil` WHERE nom_outil='?'";
try {
maconnexion.setAutoCommit(false);
stmt = maconnexion.prepareStatement(wql);
stmt.setString(1, "outil A");
stmt.setString(2, "outil avant");
stmt.executeUpdate();
maconnexion.commit();
} catch (SQLException e ) {
Connexion.printSQLException(e);
if (maconnexion != null) {
try {
System.err.print("Transaction is being rolled back");
maconnexion.rollback();
} catch(SQLException excep) {
Connexion.printSQLException(excep);
}
}
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
7 août 2015 à 20:50
Bonjour,

Ta requête semble fausse.
String wql = "DELETE  FROM `outil` WHERE nom_outil='?'";

Ce devrait être :
String wql = "DELETE  FROM outil WHERE nom_outil=?";

Le paramètre désigné par
?
n'a pas à avoir d'apostrophe, c'est Java qui les mettra si cela correspond à un String.

Ensuite tu as
stmt.setString(1, "outil A");
et
stmt.setString(2, "outil avant");
mais tu n'as qu'un seul
?
alors à quoi correspond le deuxième setString ?

Remarque : pour bien se comprendre sur le vocabulaire, ce que tu manipules c'est une table, pas un tableau.
0
Nox972 Messages postés 21 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 14 août 2015
9 août 2015 à 14:10
voila, après modification. faut-il rajoute autre chose?
int ligneSelectionne = TableOutil.getSelectedRow();
String outil = TableOutil.getValueAt(ligneSelectionne, 0).toString();
  PreparedStatement stmt = null;
String wql = "DELETE  FROM outil WHERE nom_outil=?";
try {
    maconnexion.setAutoCommit(false);
    stmt = maconnexion.prepareStatement(wql);
    stmt.setString(1, "id_outil");
    
    stmt.executeUpdate();
    maconnexion.commit();
    } catch (SQLException e ) {
      Connexion.printSQLException(e);
        if (maconnexion != null) {
            try {
                System.err.print("Transaction is being rolled back");
                maconnexion.rollback();
            } catch(SQLException excep) {
              Connexion.printSQLException(excep);
            }
        }
0
Nox972 Messages postés 21 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 14 août 2015
9 août 2015 à 14:10
on parle de table
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > Nox972 Messages postés 21 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 14 août 2015
9 août 2015 à 14:18
"faut-il rajoute autre chose?"
Oui, il faut fermer les ressources (Connection, Statement, ResultSet) et le faire proprement, c'est à dire bien gérer les cas d'exceptions.

Remarque : ton commit et ton rollback ne servent à rien vu que tu n'as qu'une seule requête, tu ne peux donc pas te retrouver dans un état intermédiaire où l'échec d'une seconde requête nécessite d'annuler le succès d'une première requête...
0
Nox972 Messages postés 21 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 14 août 2015
9 août 2015 à 22:53
Oui, il faut fermer les ressources (Connection, Statement, ResultSet) et le faire proprement, c'est à dire bien gérer les cas d'exceptions.

Pourrais-je avoir un exemple s'il vous plait?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > Nox972 Messages postés 21 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 14 août 2015
Modifié par KX le 9/08/2015 à 23:41
Historiquement :
Connection con = null;
Statement stmt = null;

try {
    conn = Connection.getConnection(url,user,pwd);
    stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(sql);
    // ...
    rs.close();
}
catch (Exception e) {
    // ...
}
finally {
    if (stmt != null) {
        try {
            stmt.close();
        }
        catch (Exception e) {
        }
    }
    if (conn != null) {
        try {
            conn.close();
        }
        catch (Exception e) {
        }
    }
}

Depuis Java 7 :
try (
    Connection con = Connection.getConnection(url,user,pwd);
    Statement stmt = conn.createStatement();
) {
    ResultSet rs = stmt.executeQuery(sql);
    // ...
    rs.close();
}
catch (Exception e) {
    // ...
}
0