Ayant rs
, une instance de java.sql.ResultSet, comment vérifier qu'il contient une colonne nommée "theColumn"?Comment vérifier qu'un ResultSet contient un champ spécifiquement nommé?
Répondre
Vous pouvez utiliser ResultSetMetaData pour parcourir les colonnes ResultSet et voir si la colonne Le nom correspond à votre nom de colonne spécifié.
Exemple:
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
// get the column names; column indexes start from 1
for (int i = 1; i < numberOfColumns + 1; i++) {
String columnName = rsMetaData.getColumnName(i);
// Get the name of the column's table name
if ("theColumn".equals(columnName)) {
System.out.println("Bingo!");
}
}
@Ivan, sachez qu'il y a quelques complexités si vous utilisez un alias (SELECT col AS truc). http://bugs.mysql.com/bug.php?id=43684 –
@JoshuaMartell, 'ResultSetMetaData.getColumnLabel' peut être utilisé si vous souhaitez obtenir le nom tel que défini par la clause' AS' de la requête SQL – Santosh
Essayez d'utiliser la méthode ResultSet#findColumn(String)
private boolean isThere(ResultSet rs, String column)
{
try
{
rs.findColumn(column);
return true;
} catch (SQLException sqlex)
{
logger.debug("column doesn't exist {}", column);
}
return false;
}
Les exceptions ne sont-elles pas lentes? – Ivan
Il peut être comparé à une exécution régulière de Java. Gardez à l'esprit que le goulot d'étranglement n'est généralement pas le code Java, mais les liens qui s'exécutent de l'autre côté - la base de données. L'exécution de la requête et le transport des données sont très probablement plus lents que la gestion des exceptions. –
Cette méthode fonctionne bien avec les alias dans mysql. – bancer
Vous pouvez faire:
rs.findColumn("theColum")
et vérifier SQLException
Ouais, le moyen le plus simple que je pense est d'essayer simplement de récupérer la colonne d'une façon ou d'une autre et attraper l'exception. – Jay
Ceci est généralement une mauvaise solution puisque vous êtes en train de lancer une exception pour un cas courant, en lançant des exceptions pour des cas rares et des ressources coûteuses –
utiliser l'objet ResultSetMetaData fourni par l'objet ResultSet
via rs.getMetaData()
Utilisez la classe ResultSetMetaData
.
public static boolean hasColumn(ResultSet rs, String columnName) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
int columns = rsmd.getColumnCount();
for (int x = 1; x <= columns; x++) {
if (columnName.equals(rsmd.getColumnName(x))) {
return true;
}
}
return false;
}
- 1. Comment vérifier l'état du Resultset?
- 2. L'utilisation d'un champ nommé
- 3. Comment vérifier si un champ est un champ Image
- 4. Comment vérifier si un objet contient un tableau d'octets?
- 5. LINQ: Vérifier si un champ (db) contient des éléments dans un ILIST?
- 6. Comment vérifier si resultset a une ligne ou plus?
- 7. Avoir un champ nommé « créé » dans un modèle - Django
- 8. Comment vérifier qu'une chaîne contient une date?
- 9. Champ de mise à jour Sqlite s'il contient
- 10. Comment vérifier si CKEditor contient du texte?
- 11. Vérifier si une chaîne contient des nombres
- 12. AWK: le séparateur de champ contient un '+'
- 13. Comment vérifier si un site Web contient Flash
- 14. Comment vérifier Un tableau de chaînes contient une chaîne particulière?
- 15. Java ResultSet comment getTimestamp UTC
- 16. vérifier si un tableau contient un élément d'un autre tableau
- 17. Comment afficher un ResultSet java visuellement?
- 18. Aide! Vérifier si un champ est vide
- 19. comment accéder à un champ enum mySQL avec Java ResultSet et PreparedStatement
- 20. SqlDataReader GetBoolean à partir du champ Resultset calculé
- 21. vérifier si le tableau contient false?
- 22. Comment vérifier si la procédure stockée a renvoyé un champ
- 23. Vérifier si le dossier contient des fichiers
- 24. vérifier si div contient un élément dans jQuery
- 25. jquery: contient un sélecteur pour vérifier deux listes
- 26. Comment vérifier si inputstream ne contient aucune donnée?
- 27. comment vérifier la chaîne contient emailid ou pas?
- 28. Comment puis-je vérifier si la chaîne $ _GET ["s"] contient ++++?
- 29. Comment vérifier si datatable contient des lignes correspondantes?
- 30. LINQ: champ de chaîne Entity contient un tableau de chaînes
double possible de [Comment puis-je déterminer si le nom de colonne existe dans le ResultSet?] (Http://stackoverflow.com/questions/3599861/how-can-i-determine-if-the- nom-colonne-existant-dans-le-jeu de résultats) – Riduidel
duplication possible de [Comment vérifier si un nom de colonne existe dans un CachedRowSet?] (http://stackoverflow.com/questions/462534/how-do- i-check-to-see-if-a-column-name-exists-in-a-cachedrowset) – bluish