Avec, java.sql.ResultSet
existe-t-il un moyen d'obtenir le nom d'une colonne en tant que String
en utilisant l'index de la colonne? J'ai jeté un œil au document API mais je ne trouve rien.
233
Vous pouvez obtenir ces informations à partir des ResultSet
métadonnées. Voir ResultSetMetaData
par exemple
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
String name = rsmd.getColumnName(1);
et vous pouvez obtenir le nom de la colonne à partir de là. Si tu fais
select x as y from table
alors rsmd.getColumnLabel()
vous obtiendrez le nom d'étiquette Récupéré aussi.
rsmd.getColumnLabel
si vous récupérez des colonnes avec des étiquettes (par exempleSELECT columnName AS ColumnLabel
for (int i = 1; i <= rsmd.getColumnCount(); i++) String name = rsmd.getColumnName(i);
getColumnName()
le nom de la colonne d'origine s'il n'utilise pas laAS
dénomination d'alias?AS
n'est pas spécifié, la valeur renvoyée pargetColumnLabel
sera la même que la valeur retournée par lagetColumnName
méthode." . Dans presque tous les cas, vous devez utiliser à lagetColumnLabel
place degetColumnName
.En plus des réponses ci-dessus, si vous travaillez avec une requête dynamique et que vous voulez les noms des colonnes mais que vous ne savez pas combien de colonnes il y a, vous pouvez utiliser l'objet ResultSetMetaData pour obtenir le nombre de colonnes en premier, puis les parcourir .
Modification du code de Brian:
la source
i <= columnCount
.Vous pouvez utiliser l'objet ResultSetMetaData ( http://java.sun.com/javase/6/docs/api/java/sql/ResultSetMetaData.html ) pour cela, comme ceci:
la source
Cette question est ancienne, tout comme les bonnes réponses précédentes. Mais ce que je cherchais quand j'ai trouvé ce sujet était quelque chose comme cette solution. Espérons que cela aide quelqu'un.
la source
Utilisation de getMetaData ();
EDIT: Cela fonctionne aussi avec PostgreSQL
la source
Nom de la table: personne Champ DataType id VARCHAR cname VARCHAR dob DATE
la source
Lorsque vous avez besoin des noms de colonne, mais que vous ne souhaitez pas récupérer les entrées:
REMARQUE: ne fonctionne qu'avec MySQL
la source
la source
Les instructions SQL qui lisent les données d'une requête de base de données renvoient les données dans un jeu de résultats. L'instruction SELECT est la méthode standard pour sélectionner des lignes dans une base de données et les afficher dans un jeu de résultats. L'
**java.sql.ResultSet**
interface représente l'ensemble de résultats d'une requête de base de données.En utilisant
MetaData of a result set to fetch the exact column count
http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html
et encore plus pour le lier à la table de modèle de données
très beau tutoriel ici: http://www.tutorialspoint.com/jdbc/
la source
@Cyntech a raison.
Dans le cas où votre table est vide et vous devez toujours obtenir les noms de colonne de table, vous pouvez obtenir votre colonne en tant que type Vector, voir ce qui suit:
la source
la source
Si vous souhaitez utiliser Spring jdbctemplate et ne souhaitez pas traiter avec le personnel de connexion, vous pouvez utiliser les éléments suivants:
la source
U peut obtenir le nom et la valeur de la colonne de resultSet.getMetaData (); Ce code fonctionne pour moi:
la source
Je sais, cette question est déjà répondue, mais probablement quelqu'un comme moi doit accéder à un nom de colonne à partir de
DatabaseMetaData
par étiquette au lieu d'index:la source