Java 从表名获取主键的值

Java 从表名获取主键的值,java,mysql,Java,Mysql,我的桌子如下: id || name || Desg || Sal || deptId 1 ||ajay ||MD ||999 ||1 2 ||Kaushal ||Engg ||100 ||2 3 ||Vidhi ||HR ||5000 ||3 4 ||Sonu ||SSP ||200 ||1 5 ||Jay

我的桌子如下:

id  || name     || Desg         || Sal  || deptId
1   ||ajay      ||MD            ||999   ||1
2   ||Kaushal   ||Engg          ||100   ||2
3   ||Vidhi     ||HR            ||5000  ||3
4   ||Sonu      ||SSP           ||200   ||1
5   ||Jay       ||Asst Manager  ||120   ||3
6   ||Uvi       ||Utra          ||450   ||5
id是主列。这只是一个名为
person
的表。 我想得到主键列的值(这里是id)。 我的
java
方法将接收表名&where子句,并返回主列值的ArrayList。现在的问题是,根据表名,应该确定哪一列是主列。是否有任何查询可以提供值::


其中sal>150&deptId!=1
(方法将接收的Where子句)

可以从
信息模式
表中提取数据库元数据,如文档所示

我想你要看的表格应该是

SELECT    COLUMN_NAME
FROM      INFORMATION_SCHEMA.COLUMNS
WHERE     TABLE_SCHEMA = '<<your schema name>>'
  AND     TABLE_NAME = '<<your table name>>'
  AND     COLUMN_KEY = 'PRI'

然后执行
newQuery

可以从
INFORMATION\u SCHEMA
表中提取数据库元数据,如文档所示

我想你要看的表格应该是

SELECT    COLUMN_NAME
FROM      INFORMATION_SCHEMA.COLUMNS
WHERE     TABLE_SCHEMA = '<<your schema name>>'
  AND     TABLE_NAME = '<<your table name>>'
  AND     COLUMN_KEY = 'PRI'

然后执行
newQuery

回答问题的第二部分

<<Part of Query to get values of primary column key>>

使用

SELECT <column name> FROM <table name> WHERE....
从何处选择。。。。

你决定在哪里解决这个问题。查询数据库元数据或仅使用开关。

回答问题的第二部分

<<Part of Query to get values of primary column key>>

使用

SELECT <column name> FROM <table name> WHERE....
从何处选择。。。。

你决定在哪里解决这个问题。查询数据库元数据或仅使用交换机。

这很公平。这个问题并不是特别清楚,我只是回答了他重复的一点问题。很公平。这个问题并不是特别清楚,我只是回答了他重复的一点问题。这样我就得到了主键列的名称。i、 e.“id”。但是我想得到该列的值…比如1,2,3.4…那么有没有一个查询,通过它可以动态地确定哪个是给定表的主键&只从数据库中获取这些列?是的,当我第一次运行时,上面的查询花费了很多时间……感谢您的帮助……@hemu,我已经添加到了答案中。基本上,您可以对INFORMATION_SCHEMA运行一个查询以获取主列名,然后使用该列名在实际表上构建另一个查询。是的..这肯定会起作用。但为此,我们需要进行2次数据库调用。一个用于获取主键列名(来自getPrimaryKeyColumn方法),另一个用于获取该列的值。我想知道我们是否能在一次通话中获得全部价值……不,据我所知不是这样。即使是连接也不起作用,因为连接是用于数据项之间的,而不是数据项和列名之间的。K..没问题…我编辑了您的答案…并使用了动态SQL…可能会起作用…我将尝试使用java..这样我就得到了主键列的名称。i、 e.“id”。但是我想得到该列的值…比如1,2,3.4…那么有没有一个查询,通过它可以动态地确定哪个是给定表的主键&只从数据库中获取这些列?是的,当我第一次运行时,上面的查询花费了很多时间……感谢您的帮助……@hemu,我已经添加到了答案中。基本上,您可以对INFORMATION_SCHEMA运行一个查询以获取主列名,然后使用该列名在实际表上构建另一个查询。是的..这肯定会起作用。但为此,我们需要进行2次数据库调用。一个用于获取主键列名(来自getPrimaryKeyColumn方法),另一个用于获取该列的值。我想知道我们是否能在一次通话中获得全部价值……不,据我所知不是这样。即使是联接也不起作用,因为联接是用于数据项之间的,而不是数据项和列名之间的。K..没问题…我编辑了您的答案…并使用了动态SQL…可能会起作用…我将尝试使用java。。