按名称从 ResultSet 中获取值

Posted

技术标签:

【中文标题】按名称从 ResultSet 中获取值【英文标题】:Get value from a ResultSet by name 【发布时间】: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

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

【问题讨论】:

您好,欢迎来到 SO,请添加您已经尝试过的代码以及您遇到的错误。请阅读how to ask 和mcve 以便下次提出更好的问题。 每一个变量是什么意思?你想得到像nameagegender这样的列名,还是像"Frank"23"M"这样的列下的值? docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html 【参考方案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
         
    
 

...

【讨论】:

以上是关于按名称从 ResultSet 中获取值的主要内容,如果未能解决你的问题,请参考以下文章

从 plpgsql 函数中获取 Java ResultSet 的返回值

从 ResultSet 获取布尔值

如何从 JAVA 中的 ResultSet 或 ResultSetMetaData 对象中获取数据库表的主键的列名?

从 ResultSet Java 中获取价值 [关闭]

如何从 React Native Picker 获取值和标签名称?

按名称自动生成表和分组值并获取多个值