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 :

PB: type d'une column = Type.NULL


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut PB: type d'une column = Type.NULL
    Bonjour a tous ..

    Voila ma petit fonction.


    DatabaseMetaData dmd = this.con.getMetaData();
    ResultSet col = dmd.getColumns(this.con.getCatalog(),null,"tablename", "colname");
    if (!col.next()) {
    System.err.println("Not existe Column : ");
    } else {
    TYPE = col.getType();
    }
    Donc ca j'ai + ou - recuperé de la fac. ma connection est sur une bass mysql .. qui marche bein, je fais des ajout supretion, je recupere les noms des table, colonne, etc ..

    Mon pb et le suivant. je lance ce bout de code sur une table de TYPE INT(11) j'attent alor un "java.sql.Types.INTEGER" le pb c'est que j'ai toujour un "ava.sql.Types.NULL" ce qui est tres ennuieux ..

    Si quelqu'un a une idee . ou un code qui marche pour recuperais le type d'une colonne en utilisant les DatabaseMetaData .

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Je te mets ca un peu en fouilli, je l'utilise regulierement et je ne me rappelle pas avoir eu de TYPE NULL pour une colonne.

    extrait de ma librairie :
    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
     
    ResultSet rs = stmt.executeQuery(str);
     
    			// on remplit la liste des noms de colonnes
    			nbcolonne = rs.getMetaData().getColumnCount();
    			dbrs.columnnames = new String[nbcolonne];
    			dbrs.columnclass = new Class[nbcolonne];
     
     
    			for( int I = 0 ; I < rs.getMetaData().getColumnCount() ; I++ ){
    				dbrs.columnnames[I] = rs.getMetaData().getColumnName(I + 1);
    				dbrs.columnclass[I] = Class.forName(rs.getMetaData().getColumnClassName(I + 1));
    			}
     
    			while ( rs.next() ){
    				dbrs.nbrows++;
    				ArrayList<Object> rec = new ArrayList<Object>();
     
    				while ( T < nbcolonne ){
    					rec.add(rs.getObject(T + 1));
    					T++;
    				}
     
    				dbrs.datas.add(rec);
    				T = 0;
    			}

    si tu trouve toujours un type null, essai de mettre a jour ton pilote jdbc.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta reponce mais c'est pas tout a fais ca que je cherche ..

    La tu recupaire les colonnes d'une reponce a une requette : "SELECT" par exemple.. ensuite tu recuper le nombre de colone. et la Class Java de la colonne et non le type SQL de la colonne .. enfin je vais tout de meme tester en ce sans mais je pence pas que sa puisse m'aider !

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Voila une fonction qui fais ce que je souhaite , merci eclesia pour la piste .. malger tout s'il et possible de faire la meme chose sans select .. sa serais bein !

    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
     
     
     private boolean 
        checkColumnType(SQLNodeColumn colNode)
        {
            try 
            {
                if (colNode.get_type() == SQLSimpleType.DEFAULT)
                    return true;
     
                ResultSet rs = stmt.executeQuery(
                        "SELECT " + colNode.get_column_name() + " FROM " + colNode.get_table_name() + ";");
                if (rs.getMetaData().getColumnCount() != 1)
                    return false;
                if (rs.getMetaData().getColumnType(1) == colNode.get_type())
                {
                    return true;
                } 
            }
            catch (Exception e) 
            {
                System.err.println("###Err: SQLService.checkColumnType \n" + e);
            }
            return false;
        }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/04/2015, 23h10
  2. Tester si une structure(type) n'est pas null
    Par draco951 dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 20/10/2012, 15h38
  3. Réponses: 0
    Dernier message: 06/06/2010, 11h24
  4. clés et valeurs à null dans une HashMap typée
    Par Djakisback dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/06/2006, 13h04
  5. [TYPE DE CHAMPS] Quel type pour une primary key ?
    Par guy2004 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 25/03/2006, 12h23

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