我正在尝试从ResultSet获取表的主键列。以下是步骤

我跟着:

1. SQL QUERY: Select id,subid,email,empname from Employee
2. Executed this from java.sql.Statement and got the Results in ResultSet.

这是有趣的部分。
3. ResultSetMetadata rsmd = rs.getMetadata();

现在,如果我观看此变量“ rsmd ”,它将显示相关列名的主键标志,但是我无法访问它或将其放入任何变量中。

我需要同样的帮助。

注意:我不想使用DatabaseMetadata及其getPrimaryKeys()函数,因为它将对外部数据库产生额外的影响。另外,ResultSetMetadata对象已经具有主键信息,我只需要获取它即可。

最佳答案

我有一个想法,使用ResultSet检查表中的列是否为主键。

在MySql JDBC驱动程序中,如果仔细看一下,java.sql.ResultSetMetaData的实际实现类将是com.mysql.jdbc.ResultSetMetaData类。此类提供protected方法来获取有关每个字段的信息

protected Field getField(int columnIndex) throws SQLException {

此方法可以为您提供每个Field索引的column实例。使用Field实例,您可以访问Field的属性。要检查它是否为主键,可以调用
Field.isPrimaryKey()

com.mysql.jdbc.ResultSetMetaData一样在类型转换中使用((com.mysql.jdbc.ResultSetMetaData) rsmd).getField(i).isPrimaryKey()的FQN。这是因为您不能导入两个具有相同名称的类文件并在文件中使用它们

请阅读MySql JDBC API中Field的文档以了解有关它的更多信息。希望这可以帮助!

关于java - 从ResultSet Java获取主键列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21328371/

10-16 16:48