按名称从 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 以便下次提出更好的问题。 每一个变量是什么意思?你想得到像name
、age
、gender
这样的列名,还是像"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 的返回值
如何从 JAVA 中的 ResultSet 或 ResultSetMetaData 对象中获取数据库表的主键的列名?