如何从给定表中获取唯一列?
Posted
技术标签:
【中文标题】如何从给定表中获取唯一列?【英文标题】:How to get the unique columns from a given table? 【发布时间】:2022-01-20 08:39:13 【问题描述】:假设我有一个名为 "person"
的表,它有 4 列(姓名、姓氏、城市、密码)。其中两列(名称、姓氏)是唯一列。我想从 JDBC 驱动程序中获取这两列。如何从 JDBC 驱动程序获取这些信息?
【问题讨论】:
这能回答你的问题吗***.com/a/48042309/6170711 【参考方案1】:您可以找到有关唯一列(定义为约束或唯一索引)的信息,使用DatabaseMetaData.getIndexInfo
,将true
传递给第四个参数(unique
)。
例如
DatabaseMetaData md = connection.getMetaData();
// NOTE: You may need to use "PERSON"
try (ResultSet rs = md.getIndexInfo(null, null, "person", true, true))
while (rs.next())
String indexName = rs.getString("INDEX_NAME");
String columnName = rs.getString("COLUMN_NAME");
if (indexName == null || columnName == null)
continue;
System.out.printf("%s: %s%n", indexName, columnName);
【讨论】:
【参考方案2】:这里有一个基于 mysql 的简单示例:
public class Test
static final String DB_URL = "jdbc:mysql://localhost:3306/yourDatabase";
static final String USER = "----";
static final String PASS = "somePass";
static final String QUERY = "SHOW KEYS FROM YOUR_TABLE WHERE Key_name = 'PRIMARY'\n";
public static void main(String[] args)
// Open a connection
final ArrayList<String> primaryKeyColumns = new ArrayList<>();
try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(QUERY);)
while (rs.next())
primaryKeyColumns.add(rs.getString(5));
catch (SQLException e)
e.printStackTrace();
System.out.println(primaryKeyColumns);
以这种方式查看使用的查询,您可以获取更具体的信息。
【讨论】:
以上是关于如何从给定表中获取唯一列?的主要内容,如果未能解决你的问题,请参考以下文章