sql >> Database teknologi >  >> RDS >> PostgreSQL

Hent alle fremmednøgler ved hjælp af JDBC

Selvom din while-løkke itererer over hele ResultSet , vil funktionen kun returnere den sidste kolonne i en FK-begrænsning, fordi du ved hver iteration overskriver værdien af ​​den forrige iteration (fkTableData = rs.getString(i); ). Btw:`fkTableData skal faktisk være en lokal variabel til metoden, ikke en instansvariabel.

Din funktion skal returnere en List<String> ikke en String .

Derudover:du kalder getImportedKeys() én gang for hver kolonne i resultatsættet. Det er ekstremt ineffektivt. Hvis du brugte Oracle, ville du straks bemærke det, fordi hentning af FK-information er ekstremt langsom der (Postgres er meget hurtigere, når du får adgang til systemkatalogerne).

Som getImportedKeys() returnerer en række for hver FK kolonne du skal også samle alle rækker, der hører til en enkelt begrænsningsdefinition (dvs. for en overordnet/underordnet tabelkombination).

Det bedste ville nok være at definere en klasse PkDefinition der gemmer alle involverede kolonner og de involverede tabelnavne og får din funktion til at returnere List<PkDefinition> for at undgå flere opkald for den samme resultatsætrække.




  1. Postgresql:Sådan finder du filen pg_hba.conf ved hjælp af Mac OS X

  2. Tilslutning af Oracle til SQL Server over en sikker forbindelse

  3. Python:bruge mysqldb til at importere en MySQL-tabel som en ordbog?

  4. Uddrag tidsdelen fra TimeStamp-kolonnen i ORACLE