java - 排除显示结果集的 JTable 中包含的外键

标签 java swing jdbc jtable foreign-keys

我有一个带有默认表模型的 JTable,我用它来显示结果集。我正在使用 postgreSQL。我试图让表排除主键和外键。到目前为止,我已经成功排除主键,但排除外键失败。

这就是我获取外键的方式:

public List<String> getFKeyData(String tableName, int i) throws SQLException {
    DatabaseMetaData dm = connection.getMetaData();
    ResultSet rs = dm.getImportedKeys(null, null, tableName);
    ArrayList<String> fkTableData = new ArrayList<>();
    while (rs.next()) {
        fkTableData.add(rs.getString(i));
    }
    return fkTableData;
}

这就是我最初想到的排除外键的方式:

int fkSize = databaseConnection.getFKeyData(tableName, 8).size();

for (int i = 0; i <= fkSize - 1; i++) {
    if (databaseConnection.getColumnNames(tableName).indexOf(databaseConnection.getFKeyData(tableName, 8).get(i)) == 1) {
         if (databaseConnection.getColumnNames(tableName).indexOf(databaseConnection.getPKey(tableName)) != 1) {
                if (databaseConnection.getColCount(tableName) >= 1) {
                    model.addColumn(columnNamesV.get(1), cellData1);
                }
            }
      }
}

我现在意识到这是愚蠢的,因为尽管它确实排除了外键,但无论如何它都会通过 for 语句添加到模型中。有谁知道解决这个问题的方法吗?

最佳答案

不要使用 DefaultTableModel,而是扩展 AbstractTableModel ,您可以在其中控制 getColumnCount()getValueAt() 返回的结果。

关于java - 排除显示结果集的 JTable 中包含的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18759689/

相关文章:

Java Swing : Event-Dispatching Thread VS Stopwatch

java - 在哪里使用 Netbeans 本地化某些菜单项中的字符串?

java - JSpinner : how to display both numbers and text?

java - 为什么这个来自SOF的解决方案没有生效?

java - Prepared Statement Batch 在异常发生时的行为

java - 运行 css-validator.jar 时出现 ClassNotFoundException 错误

java - 如何从列表中删除所有重复项

java - 我正在制作动画的这个正方形在它后面留下了痕迹,任何人都可以找出原因吗?

java - 将 JDBC ResultSet 转换为泛型类型?

java - 如何在 JdbcTemplate 中查询 List<String>?