L'instruction sql ExecuteUpdate en Java ne fonctionne pas


J'apprends à utiliser SQL avec Java. J'ai installé le pilote JDBC avec succès et je suis capable de lire les enregistrements d'une base de données et l'imprimer sur l'écran.

Mon problème se produit lorsque vous essayez de faire une instruction update ou insert, où rien ne se passe. Voici mon code:

Méthode où le problème réside

public static void updateSchools(ArrayList<String> newSchool)
{
    try
    {
        openDatabase();
        stmt = c.createStatement();
        int numberOfRows = stmt.executeUpdate("UPDATE schools SET address='abc' WHERE abbreviation='2';");
        System.out.println(numberOfRows);
        closeDatabase();
    }
    catch (Exception e)
    {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }
}

Fonctions de support

public static void openDatabase()
{
    c = null;
    stmt = null;
    try
    {
        Class.forName("org.postgresql.Driver");
        c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/Badminton", "postgres", "postgrespass");
        c.setAutoCommit(false);
    }
    catch (Exception e)
    {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }
    System.out.println("Database opened successfully");
}

public static void closeDatabase()
{
    try
    {
        stmt.close();
        c.close();
    }
    catch (Exception e)
    {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }
    System.out.println("Database closed successfully");
}

Voici une image de ma base de données très simple: entrez la description de l'image ici

Le le résultat dans la console est le suivant, bien qu'aucune modification des bases de données n'ait été effectuée:

La base de données a été ouverte avec succès

1

La base de données a été fermée avec succès

Merci d'avance!

Author: Benoit Goderre, 2016-10-27

1 answers

Supprime la ligne c.setAutoCommit(false) de la méthode openDatabase.

Ou

Ajouter c.commit() à la fin de la updateSchool méthode.

Une fois le mode de validation automatique désactivé, aucune instruction SQL validée jusqu'à ce que vous appeliez explicitement la méthode commit. Toutes les déclarations exécutés après l'appel précédent à la méthode commit sont inclus dans la transaction en cours et engagée ensemble en tant qu'unité.

 7
Author: Kushan, 2016-10-28 04:08:47