Reputation: 155
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)?
Upvotes: 4
Views: 17848
Reputation: 71
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
}
}
}
...
Upvotes: 4
Reputation: 910
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(); }
}
Upvotes: 5