简体   繁体   中英

Get value from a ResultSet by name

How can I get a value from a ResultSet by the attribute name?

DB-Table (table):

name:TEXT | age:INT | gender:INT

SQL-Query:

SELECT * FROM table WHERE name='john'

The output is in a java.sql.ResultSet

How can I get a variable by column's name (name, age, gender)?

You can itterate over the values like this:

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(); }
    }

Use ResultSetMetaData :

ResultSetMetaData metaData = resultSet.getMetaData();

For example:

...
 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
         }
    }
 }

...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM