gpt4 book ai didi

java - 使用 Java、SQL 和 Oracle 引用和引用表的 List 或 ArrayList

转载 作者:行者123 更新时间:2023-11-30 02:54:56 24 4
gpt4 key购买 nike

我试图在 ArrayList(例如)中获取一个完整的列表,其中包含另一个表引用的表,并且该列表由其他表引用。

我正在寻找 Java 中的一个函数,它有一个条目(我想要查找的表)和一个结果(ArrayList)。

函数的标题是这样的:

private static ArrayList<String> name_tables (String table) { ... }

我希望该函数返回一个表列表,其中 table 被另一个表引用,并且 table 引用其他表。它就像包含 table 外键的表以及 table 具有其他表的外键。

如何使用 Oracle 在 Java 中实现它?

最佳答案

Oracle 设置:

CREATE TABLE test.parent_table (
id INT PRIMARY KEY
);

CREATE TABLE test.child_table (
id INT PRIMARY KEY,
parent_id INT REFERENCES parent_table ( id ),
prev_id INT REFERENCES child_table ( id )
);

Java 代码:

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DescribeDB {
public static void main( String[] args )
{
try{
Class.forName("oracle.jdbc.OracleDriver");

Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:XE",
"username",
"password"
);

DatabaseMetaData md = con.getMetaData();

ResultSet rs = md.getImportedKeys(
con.getCatalog(),
"TEST",
"CHILD_TABLE"
);

while (rs.next()) {
System.out.println(
String.format(
"%s.%s.%s references %s.%s.%s",
rs.getString("FKTABLE_SCHEM"),
rs.getString("FKTABLE_NAME"),
rs.getString("FKCOLUMN_NAME"),
rs.getString("PKTABLE_SCHEM"),
rs.getString("PKTABLE_NAME"),
rs.getString("PKCOLUMN_NAME")
)
);
}
} catch(ClassNotFoundException | SQLException e) {
System.out.println(e);
}
}
}

输出:

TEST.CHILD_TABLE.PREV_ID references TEST.CHILD_TABLE.ID
TEST.CHILD_TABLE.PARENT_ID references TEST.PARENT_TABLE.ID

关于java - 使用 Java、SQL 和 Oracle 引用和引用表的 List 或 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37531816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com