当前位置: 首页 > 面试题库 >

从ResultSet Java获取主键列

许寒
2023-03-14
问题内容

我正在尝试从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.ResultSetMetaDataclass。此类提供一种protected获取有关每个字段的信息的方法

protected Field getField(int columnIndex) throws SQLException {

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

Field.isPrimaryKey()

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

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



 类似资料:
  • 我有一个带有主键和排序键的表;因为这是一个复合键,所以我有多个主键与不同的排序键映射。 如何获取与特定主键关联的所有排序键? 我尝试使用“Get”操作,但这似乎也需要排序键(尽管我正在寻找这些键)。我还研究了“BatchGet”操作,但这是针对多个不同的键,而不是针对具有多个不同排序键的单个主键。 我也尝试过“查询”,但没有成功,但我对这一点了解较少,所以这可能就是解决方案——是这样吗?我还知道,

  • 我刚开始冬眠并尝试使用标准。我一直在从2个表(即主外键在realtion中的表)中获取结果。 我有Carpooler和SourceToDestination细节DTO,现在基于用户搜索数据,我想填充Carpooler Object,其中包含SourceToDestination细节,但我没有得到它,不知道如何使用标准API。 通过以上标准API,我只得到了SourceToDestination细节

  • 问题内容: 有没有办法从mysql-database获取主键字段的名称?例如: 我有一张这样的桌子: 其中字段ID是主键(它具有自动递增功能,但我不能使用它)。如何在php中检索字段名称“ id”? 问题答案: 一种更好的方法是使用,因为您并不总是可以访问information_schema。以下作品: Column_name将包含主键的名称。

  • 我有一个主键值,我想获取一个记录以进行更新,所以现在我写: JOOQ知道我的表的主键(例如,它会生成onKey()方法等)-因此我希望得到如下结果: 但这似乎不是一件事。有没有更简洁的方法使用JOOQ API来做我想要的事情?

  • 问题内容: 给定一个表名,如何从plpgsql函数中提取主键列及其数据类型的列表? 问题答案: 上面的查询非常糟糕,因为它确实很慢。 我会推荐这个正式版本: http://wiki.postgresql.org/wiki/Retrieve_primary_key_columns 如果需要模式,查询如下

  • 我正在使用Node。js和DynamoDB JavaScript SDK开发。 我有一个表,它使用“ID”作为分区键(散列键),使用“time”作为排序键(范围键)。我想从多分区密钥中获取最新的N个数据。 我可以使用Query从分区键获取最新的N个数据。 但我不知道如何从多分区密钥中获取最新的N个数据。如果我想从10个分区键获取数据,我应该查询10次吗?