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 :

Retour de requête anormalement vide


Sujet :

JDBC Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut Retour de requête anormalement vide
    Bonjour,

    J'ai hérité d'un petit programme Java (d'un ancien collègue) pour faire des migrations Oracle vers SQL Server (sur deux serveurs différents), dont voici une partie du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
                oracle = oracleSource.getConnection();
                sqlServer = sqlserverSource.getConnection();
                sqlServer.setAutoCommit(false);
     
                QueryHelper helper = helpers.get(jobName);
                String table = helper.table;
                table = table.toUpperCase();
     
                LinkedHashMap<String, Column> oracleColumns = getTableColumns(oracle.getMetaData(), table);
                LinkedHashMap<String, Column> sqlServerColumns = getTableColumns(sqlServer.getMetaData(), table);
     
                List<String> commonColumns = new ArrayList<String>();
                Set<Integer> codes = new HashSet<Integer>();
                for (String column : oracleColumns.keySet()) {
                    if (sqlServerColumns.containsKey(column) && (helper.selectedColumns.isEmpty() || helper.selectedColumns.contains(column))) {
                        commonColumns.add(column);
                        codes.add(oracleColumns.get(column).type);
                    }
                }
     
                jobLogger = new JobLogger(job, commonColumns);
                if (lastAcceptanceDate != null && new Date().after(lastAcceptanceDate)) {
                     jobLogger.log("CANCELLING JOB, too late !");
                     return;
                }
     
                jobLogger.log(".Used SQL Types: " + codes);
     
                String queryString = "select * " + helper.buildFromPartOracle(month);
                String insertString = "insert into " + table + " (" + StringUtils.join(commonColumns, ", ") + ") VALUES (" + StringUtils.repeat("?", ", ", commonColumns.size()) + ")";
     
                PreparedStatement query = oracle.prepareStatement(queryString);
                PreparedStatement insertStatement = sqlServer.prepareStatement(insertString);
     
                jobLogger.log(".ORACLE QUERY: " + queryString);
                StopWatch watch = new StopWatch();
                watch.start();
                query.setFetchSize(FETCH_SIZE);
                ResultSet result = query.executeQuery();
                while (result.next()) {
                    jobLogger.log(String.format("resultat : %s",result.getRow()));
                }
    Donc, la première partie fait un select dans la base Oracle et la seconde partie fait un insert dans la base SQL Server.
    Mon souci vient du retour de la requête Oracle qui est anormalement vide.

    J'ai testé pas mal de modifications :
    - Lancer le programme sur les deux serveurs en admin
    - Retiré tout le code superflu
    - Exécuté directement la requête dans query.executeQuery(requete);
    - ...

    Pourtant, la requête retourne bien quelque chose directement sur Oracle et j'ai vérifié 50 fois la connexion.

    Ma requête met 2 minutes dans le programme et sur Oracle (donc même temps). De plus, il y a un système Try catch donc aucun Timout en vu.

    Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

    Merci d'avance pour vos solutions.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Quel output tu as dans ta console?
    Es-tu sur que le programme utilise le même nom d'utilisateur oracle que celui que tu utilise pour tester dans sqldeveloper?

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Dans ma console j'ai un truc de ce genre db-migrate doc_files 2006-08 mais l'un de mes collègue vient de trouver le problème qui est lié a une mauvaise utilisation en ligne de commande.

    Merci pour votre intervention.

    Cordialement.

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/11/2022, 12h32
  2. Réponses: 5
    Dernier message: 10/01/2007, 16h37
  3. requête mysql vide
    Par sam01 dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/07/2006, 23h08
  4. Résultat requête champ vide
    Par lito74 dans le forum Access
    Réponses: 3
    Dernier message: 24/05/2006, 15h50
  5. [Crystal Report] Champs affichés même si la requête est vide
    Par navis84 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 25/02/2005, 17h18

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