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。。