IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

vérifier qu'une table existe avec JDBC et PosgreSQL


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 50
    Points : 46
    Points
    46
    Par défaut vérifier qu'une table existe avec JDBC et PosgreSQL
    Bonjour à tous !
    Je souhaite vérifier qu'une table existe dans une base PostgreSQL via JDBC. Quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try {
                s = conn.createStatement();
                ResultSet rs = s.executeQuery("SHOW TABLES LIKE 'table1';");
                if (!rs.next()) {
                    System.err.println("La table 'table1' n'existe pas.");
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    J'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    org.postgresql.util.PSQLException: ERREUR: erreur de syntaxe sur ou près de « LIKE »
      Position*: 13
    Pourtant, PostgreSQL connait l'opérateur like... non ? L'erreur viendrait d'où ?

    Merci pour l'aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Il ne faut pas faire comme ça pour tester l'existence d'une table mais passer par DatatableMetaData.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    DatabaseMetaData dbmd = conneciton.getMetaData();
    ResultSet rs = dbmd.getTables(catalogue, schema, tablePattern, tableTypes);
    if (rs.next())
    {
       ... on a trouvé
    }
    Ci-dessous les explications des paramètres
    ResultSet getTables(String catalog,
    String schemaPattern,
    String tableNamePattern,
    String[] types)
    throws SQLException Retrieves a description of the tables available in the given catalog. Only table descriptions matching the catalog, schema, table name and type criteria are returned. They are ordered by TABLE_TYPE, TABLE_CAT, TABLE_SCHEM and TABLE_NAME. Each table description has the following columns:

    1. TABLE_CAT String => table catalog (may be null)
    2. TABLE_SCHEM String => table schema (may be null)
    3. TABLE_NAME String => table name
    4. TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
    5. REMARKS String => explanatory comment on the table
    6. TYPE_CAT String => the types catalog (may be null)
    7. TYPE_SCHEM String => the types schema (may be null)
    8. TYPE_NAME String => type name (may be null)
    9. SELF_REFERENCING_COL_NAME String => name of the designated "identifier" column of a typed table (may be null)
    10. REF_GENERATION String => specifies how values in SELF_REFERENCING_COL_NAME are created. Values are "SYSTEM", "USER", "DERIVED". (may be null)

    Note: Some databases may not return information for all tables.

    Parameters:catalog - a catalog name; must match the catalog name as it is stored in the database; "" retrieves those without a catalog; null means that the catalog name should not be used to narrow the searchschemaPattern - a schema name pattern; must match the schema name as it is stored in the database; "" retrieves those without a schema; null means that the schema name should not be used to narrow the searchtableNamePattern - a table name pattern; must match the table name as it is stored in the databasetypes - a list of table types, which must be from the list of table types returned from getTableTypes(),to include; null returns all typesReturns:ResultSet - each row is a table descriptionThrows:SQLException - if a database access error occurs
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    Merci bien, problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérifier qu'une table existe
    Par wilfryjules dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/06/2014, 17h52
  2. [AC-97] Comment vérifier si une table existe? (fn OpenSchema)
    Par BornToBe dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/04/2012, 09h57
  3. [Débutant] Vérifier si une table existe et si non la créer
    Par def_msy dans le forum C#
    Réponses: 0
    Dernier message: 04/08/2011, 18h07
  4. Vérifier si une modifié existe dans ma table
    Par hoangeric dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 01/07/2009, 17h37
  5. Vérifier qu'une base existe avec un script unix
    Par ibhow dans le forum Débuter
    Réponses: 1
    Dernier message: 23/09/2008, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo