如何查看数据库中的数据库JDBC ResultSet in java

问题描述:

我收到一条错误消息,指出在从数据库返回的ResultSet内丢失了一些string。现在我有一个问题:我怎么能看到ResultSet里面有什么?如何查看数据库中的数据库JDBC ResultSet in java

谷歌提供的例子有明确的方法,如getString()getInt(),但这些方法假设你知道你在找什么。我真正需要的是 - 查看我的ResultSet中有哪些元素可用。

就像我发出resultSet.toString()命令时一样,它会显示一些带有变量名称的地图 - 有可能吗?

编辑:

如果它是有用的 - 下面是一段代码:

public Project mapRow(ResultSet resultSet, int i) throws SQLException { 
     System.out.println(resultSet.toString()); 
     return new Project(resultSet.getInt("project_id"), resultSet.getString("project_name"), 
          resultSet.getString("project_description"), new Category(resultSet.getInt("category_id"), 
                        resultSet.getString("category_name")), 
          resultSet.getString("project_link"), resultSet.getString("project_qa")); 
    } 

错误:

Caused by: org.postgresql.util.PSQLException: The column name category_id was not found in this ResultSet. 
+0

你为什么要那样做?如果你想看看,那么你可以使用getString或getInt方法来做到这一点? – SMA

+0

你为什么要这样?你可以迭代你的结果,看看你有什么数据。 –

+0

您的** ResultSet **一次包含一个元素? –

ResultSet包含在执行后没有元素一份声明。要获得第一行信息,您需要执行rs.next()

下面是通过ResultSet值的简单迭代。

boolean hasValue = false; 
while(resultSet.next()) 
{ 
    hasValue = true; 
    out.println(resultSet.getString("column_name"); 
    out.println(resultSet.getInt("column_name"); 
} 
if(hasValue) 
    out.println("Result set has values inside of it"); 
else out.println("Result set has no values inside of it"); 

只要你有你的resultSet变量中的一些值,您需要遍历它来获得下一个值。默认情况下,查询执行后,您没有任何价值,因为它可能没有任何价值。

编辑:

ResultSetMetaData metaData = resultSet.getMetaData(); 
int count = metaData.getColumnCount(); //number of column 
String columnName[] = new String[count]; 

for (int i = 1; i <= count; i++) 
{ 
    columnName[i-1] = metaData.getColumnLabel(i)); 
} 

这给你列名,如果这是你想要的。

+0

这不是我想要的。这里当你实现resultSet.getString(“column_name”) - 你知道列的名字。我想要的 - 发现专栏名称!看看我从数据库中得到了哪些列。 – ovod

+0

@ovod,我明白你想要什么。用一小段文字编辑我的答案,以解决您的问题。 –

+0

@ovod,什么?我给你的解决方案,你接受了我回答你后的答案?哦,我的...不错的一个.. –

通过ResultSet.getMetaData()从结果集中获取ResultSetMetaData

ResultSetMetaData有方法getColumnCountgetColumnName枚举列名称。