Java exception et champs NULL DB
Résolu/Fermé
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
-
7 sept. 2010 à 11:29
choubaka Messages postés 39421 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 23 mars 2025 - 7 sept. 2010 à 19:45
choubaka Messages postés 39421 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 23 mars 2025 - 7 sept. 2010 à 19:45
Bonjour,
Comment faire pour éviter : java.lang.NullPointerException lors de l'affichage d'un table sql possédant des champs Null ?
Cdt
Comment faire pour éviter : java.lang.NullPointerException lors de l'affichage d'un table sql possédant des champs Null ?
Cdt
A voir également:
- Java exception et champs NULL DB
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Bp bc db - Forum Réseaux sociaux
- A java exception has occurred ✓ - Forum Minecraft
6 réponses
choubaka
Messages postés
39421
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
23 mars 2025
2 104
7 sept. 2010 à 13:22
7 sept. 2010 à 13:22
Dans ResulSetMetaData, il existe ceci
isNullable
int isNullable(int column)
throws SQLExceptionIndicates the nullability of values in the designated column.
Parameters:
column - the first column is 1, the second is 2, ...
Returns:
the nullability status of the given column; one of columnNoNulls, columnNullable or columnNullableUnknown
Throws:
SQLException - if a database access error occurs
Tu peux peut-être faire le test la dessus
isNullable
int isNullable(int column)
throws SQLExceptionIndicates the nullability of values in the designated column.
Parameters:
column - the first column is 1, the second is 2, ...
Returns:
the nullability status of the given column; one of columnNoNulls, columnNullable or columnNullableUnknown
Throws:
SQLException - if a database access error occurs
Tu peux peut-être faire le test la dessus
choubaka
Messages postés
39421
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
23 mars 2025
2 104
7 sept. 2010 à 11:32
7 sept. 2010 à 11:32
Salut
Difficile à dire comme ça...
Difficile à dire comme ça...
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
7 sept. 2010 à 11:44
7 sept. 2010 à 11:44
Le code java d'exécution et d'affichage d'une requête sql :
La table BOB :
possède des champs genre "id" "name" "url" et parfois la donnée de "url" est à "null". Et la paf ca fait des choca... exceptions!
//-----Requete sql----- //Création d'un objet Statement Statement state = conn.createStatement(); //L'objet ResultSet contient le résultat de la requête SQL ResultSet result = state.executeQuery("SELECT * FROM bob"); //On récupère les MetaData ResultSetMetaData resultMeta = result.getMetaData(); System.out.println("\n**********************************"); //On affiche le nom des colonnes for(int i = 1; i <= resultMeta.getColumnCount(); i++) System.out.print("\t" + resultMeta.getColumnName(i).toUpperCase() + "\t *"); System.out.println("\n**********************************"); while(result.next()){ for(int i = 1; i <= resultMeta.getColumnCount(); i++) System.out.print("\t" + result.getObject(i).toString() + "\t |"); System.out.println("\n---------------------------------"); } result.close(); state.close();
La table BOB :
possède des champs genre "id" "name" "url" et parfois la donnée de "url" est à "null". Et la paf ca fait des choca... exceptions!
choubaka
Messages postés
39421
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
23 mars 2025
2 104
7 sept. 2010 à 11:48
7 sept. 2010 à 11:48
tu peux inclure dans ta boucle une condition avant de traiter ton résultat ?
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
7 sept. 2010 à 13:04
7 sept. 2010 à 13:04
C'est fait en dessous, mais je ne vois pas comment mettre une condition sur un résultat avant de le "traiter"...
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
Modifié par fxtaa le 7/09/2010 à 12:03
Modifié par fxtaa le 7/09/2010 à 12:03
J'ai testé ca mais ca ne marche toujours pas :
while(result.next()){ for(int i = 1; i <= resultMeta.getColumnCount(); i++){ if (result.getObject(i).toString()== "null"){ // " " "" "NULL" System.out.println("\t NULL \t |"); } else{ System.out.print("\t" + result.getObject(i).toString() + "\t |"); } } System.out.println("\n---------------------------------"); }
choubaka
Messages postés
39421
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
23 mars 2025
2 104
7 sept. 2010 à 13:25
7 sept. 2010 à 13:25
une petite question ...
je vois que tu fais ceci
result.getObject(i)
Cette méthode te renvoie un objet...
tu a essayé de faire
result.getString(i) ?????
je vois que tu fais ceci
result.getObject(i)
Cette méthode te renvoie un objet...
tu a essayé de faire
result.getString(i) ?????
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
7 sept. 2010 à 13:36
7 sept. 2010 à 13:36
Ca provient d'un tuto du site du zero, d'apres ce que j'ai compris, ca permet d'éviter les problèmes de typages. (Je vais essayer le isnullable)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
Modifié par fxtaa le 7/09/2010 à 13:46
Modifié par fxtaa le 7/09/2010 à 13:46
Je ne vois pas comment utiliser isnullable.............
je fais un
Mais bien entendu ca ne fonctionne pas :(
je fais un
if (ResultSetMetaData isnullable){ System.out.println("\t NULL \t |"); } else{ System.out.print("\t" + result.getObject(i).toString() + "\t |"); }
Mais bien entendu ca ne fonctionne pas :(
choubaka
Messages postés
39421
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
23 mars 2025
2 104
7 sept. 2010 à 14:01
7 sept. 2010 à 14:01
tu ne sais pas faire un test sur isNullable, celà te renvoie un "int" qui te donne un des trois valeurs statiques( columnNoNulls, columnNullable or columnNullableUnknown)
...
De plus, tu dois indiquer le numéro de la colonne.
Donc
if (resultMeta.isNullable(i) == ResultMetaData.columnNullable){
System.out.println("\t NULL \t |");
}
else{
System.out.print("\t" + result.getObject(i).toString() + "\t |");
}
...
De plus, tu dois indiquer le numéro de la colonne.
Donc
if (resultMeta.isNullable(i) == ResultMetaData.columnNullable){
System.out.println("\t NULL \t |");
}
else{
System.out.print("\t" + result.getObject(i).toString() + "\t |");
}
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 292
7 sept. 2010 à 14:16
7 sept. 2010 à 14:16
Il faut lire les Javadoc de temps en temps ;-)
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
7 sept. 2010 à 16:23
7 sept. 2010 à 16:23
Merci ca fonctionne.
choubaka
Messages postés
39421
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
23 mars 2025
2 104
7 sept. 2010 à 19:45
7 sept. 2010 à 19:45
cool