从java.sql.ResultSet中检索列名有java.sql.ResultSet没有办法String通过使用列的索引获取列的名称?我查看了API文档但我找不到任何东西。
3 回答

冉冉说
TA贡献1877条经验 获得超1个赞
您可以从ResultSet
元数据中获取此信息。请参见ResultSetMetaData
例如
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2"); ResultSetMetaData rsmd = rs.getMetaData(); String name = rsmd.getColumnName(1);
你可以从那里得到列名。如果你这样做
select x as y from table
然后rsmd.getColumnLabel()
也会得到检索到的标签名称。

肥皂起泡泡
TA贡献1829条经验 获得超6个赞
除了上面的答案,如果您正在使用动态查询并且您想要列名但不知道有多少列,则可以使用ResultSetMetaData对象首先获取列数,然后循环它们。
修改Brian的代码:
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");ResultSetMetaData rsmd = rs.getMetaData();int columnCount = rsmd.getColumnCount();// The column count starts from 1for (int i = 1; i <= columnCount; i++ ) { String name = rsmd.getColumnName(i); // Do stuff with name}

哆啦的时光机
TA贡献1779条经验 获得超6个赞
这个问题很老,以前的答案也是正确的。但是当我发现这个话题时我正在寻找的就像这个解决方案。希望它可以帮助某人。
// Loading required libraries import java.util.*;import java.sql.*;public class MySQLExample { public void run(String sql) { // JDBC driver name and database URL String JDBC_DRIVER = "com.mysql.jdbc.Driver"; String DB_URL = "jdbc:mysql://localhost/demo"; // Database credentials String USER = "someuser"; // Fake of course. String PASS = "somepass"; // This too! Statement stmt = null; ResultSet rs = null; Connection conn = null; Vector<String> columnNames = new Vector<String>(); try { // Register JDBC driver Class.forName(JDBC_DRIVER); // Open a connection conn = DriverManager.getConnection(DB_URL, USER, PASS); // Execute SQL query stmt = conn.createStatement(); rs = stmt.executeQuery(sql); if (rs != null) { ResultSetMetaData columns = rs.getMetaData(); int i = 0; while (i < columns.getColumnCount()) { i++; System.out.print(columns.getColumnName(i) + "\t"); columnNames.add(columns.getColumnName(i)); } System.out.print("\n"); while (rs.next()) { for (i = 0; i < columnNames.size(); i++) { System.out.print(rs.getString(columnNames.get(i)) + "\t"); } System.out.print("\n"); } } } catch (Exception e) { System.out.println("Exception: " + e.toString()); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (Exception mysqlEx) { System.out.println(mysqlEx.toString()); } } }}
添加回答
举报
0/150
提交
取消