Gibt java.sql.ResultSet
es eine Möglichkeit, den Namen einer Spalte String
mithilfe des Spaltenindex als zu ermitteln? Ich habe das API-Dokument durchgesehen, kann aber nichts finden.
233
Sie können diese Informationen aus den ResultSet
Metadaten erhalten. Siehe ResultSetMetaData
z.B
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
String name = rsmd.getColumnName(1);
und Sie können den Spaltennamen von dort erhalten. Wenn Sie tun
select x as y from table
Dann rsmd.getColumnLabel()
erhalten Sie auch den abgerufenen Markennamen.
rsmd.getColumnLabel
wenn Sie Spalten mit Beschriftungen abrufen (zum BeispielSELECT columnName AS ColumnLabel
for (int i = 1; i <= rsmd.getColumnCount(); i++) String name = rsmd.getColumnName(i);
getColumnName()
den ursprünglichen Spaltennamen zurück, wenn keineAS
Aliasnamen verwendet werden?AS
angegeben ist, entspricht der von zurückgegebenegetColumnLabel
Wert dem von dergetColumnName
Methode zurückgegebenen Wert ." . In fast allen Fällen sollten SiegetColumnLabel
anstelle von verwendengetColumnName
.Wenn Sie mit einer dynamischen Abfrage arbeiten und die Spaltennamen möchten, aber nicht wissen, wie viele Spalten vorhanden sind, können Sie zusätzlich zu den obigen Antworten das ResultSetMetaData-Objekt verwenden, um zuerst die Anzahl der Spalten abzurufen und diese dann zu durchlaufen .
Änderung von Brians Code:
quelle
i <= columnCount
.Sie können das ResultSetMetaData- Objekt ( http://java.sun.com/javase/6/docs/api/java/sql/ResultSetMetaData.html ) dafür wie folgt verwenden :
quelle
Diese Frage ist alt, ebenso wie die richtigen vorherigen Antworten. Aber was ich suchte, als ich dieses Thema fand, war so etwas wie diese Lösung. Hoffentlich hilft es jemandem.
quelle
Verwenden von getMetaData ();
EDIT: Dies funktioniert auch mit PostgreSQL
quelle
Tabellenname: Person Feld Datentyp ID VARCHAR cname VARCHAR dob DATE
quelle
Wenn Sie die Spaltennamen benötigen, aber keine Einträge abrufen möchten:
HINWEIS: Funktioniert nur mit MySQL
quelle
quelle
Die SQL-Anweisungen, die Daten aus einer Datenbankabfrage lesen, geben die Daten in einer Ergebnismenge zurück. Die SELECT-Anweisung ist die Standardmethode, um Zeilen aus einer Datenbank auszuwählen und in einer Ergebnismenge anzuzeigen. Die
**java.sql.ResultSet**
Schnittstelle repräsentiert die Ergebnismenge einer Datenbankabfrage.Verwenden von
MetaData of a result set to fetch the exact column count
http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html
und weiter, um es an die Datenmodelltabelle zu binden
sehr schönes Tutorial hier: http://www.tutorialspoint.com/jdbc/
quelle
@Cyntech ist richtig.
Wenn Ihre Tabelle leer ist und Sie noch Tabellenspaltennamen abrufen müssen, können Sie Ihre Spalte als Typ Vektor abrufen, siehe Folgendes:
quelle
quelle
Wenn Sie spring jdbctemplate verwenden möchten und sich nicht mit Verbindungspersonal befassen möchten, können Sie Folgendes verwenden:
quelle
U kann Spaltennamen und -wert von resultSet.getMetaData () abrufen. Dieser Code funktioniert für mich:
quelle
Ich weiß, diese Frage ist bereits beantwortet, aber wahrscheinlich muss jemand wie ich auf einen Spaltennamen zugreifen
DatabaseMetaData
by label anstelle von index :quelle