【问题标题】:Get value from a ResultSet by name按名称从 ResultSet 中获取值
【发布时间】:2016-04-24 01:17:18
【问题描述】:

如何通过属性名称从 ResultSet 中获取值?

DB-Table(表):

name:TEXT | age:INT | gender:INT

SQL 查询:

SELECT * FROM table WHERE name='john'

输出在java.sql.ResultSet

如何按列名(姓名、年龄、性别)获取变量?

【问题讨论】:

标签: java mysql resultset


【解决方案1】:

您可以像这样迭代这些值:

Statement stmt = null;
    String query = "SELECT * FROM table WHERE name='john'";
    try {
        stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(query);
        while (rs.next()) {
            String name= rs.getString("name");
            int age= rs.getInt("age");
            int gender = rs.getInt("gender");
        }
    } catch (Exception e ) {
        e.printStackTrace();
    } finally {
        if (stmt != null) { stmt.close(); }
    }

【讨论】:

  • @Shapci 如果这是所需的解决方案,请投票或接受答案,以便社区可以将其视为已解决。
  • @JoelGeiser 此时问题的质量太差了,很难从答案中得出很多结论——最好先使用 cmets 来解决问题。因为如果它没有得到修复,它很可能最终会关闭。
【解决方案2】:

使用ResultSetMetaData:

ResultSetMetaData metaData = resultSet.getMetaData();

例如:

...
 ResultSet rs = stmt.executeQuery(query);
   while (rs.next()) {
         int count = metaData.getColumnCount();
         for (int i = 1; i <= count; i++)
         {
           String columnName = metaData.getColumnName(i);
           int type = metaData.getColumnType(i);
           if (type == Types.VARCHAR || type == Types.CHAR) {
               out.print(rs.getString(columnName));
               String name= rs.getString(columnName);
           }
           if (type==Types.INTEGER){
               out.print(rs.getInt(columnName));
               int age= rs.getInt(columnName);
            }
           // ....
           // save columnName and name
         }
    }
 }

...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多