Supprimer une ligne d'un tableau?

Résolu
Nox972 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
on parle de table
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > Nox972 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
"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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > Nox972 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
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