如何检查TableView中的列是否为主键(ResultSet)并使单元格不可编辑

发布于 2025-01-12 14:03:05 字数 1188 浏览 0 评论 0原文

如何检查使用 ResultSet 获取的列是否为主列,以及是否为主列,而不是使该列的单元格不可编辑。我使用 JavaFX。

我正在使用此代码,但它不起作用...谢谢!

 ObservableList<String> column = FXCollections.observableArrayList();
    HashSet<String> set = new HashSet();
    DatabaseMetaData meta = conn.getMetaData();
    tblTable.getColumns().clear();
    ResultSet cols = meta.getColumns(comboDatabase.getValue(), null, cmbTable.getValue(), null);
    ResultSet pk = meta.getPrimaryKeys(comboDatabase.getValue(), null,cmbTable.getValue());
        while (pk.next()) {
        String primarykey = pk.getString("COLUMN_NAME");
        set.add(primarykey);
        }
    while (cols.next()) {
    String name = cols.getString("COLUMN_NAME");
    TableColumn col = new TableColumn(name);
    column.add(name);
    tblTable.getColumns().addAll(col);
  
    
      if(set.contains(column)){
    col.setCellFactory(TextFieldTableCell.forTableColumn());
    col.setEditable(false);
    tblTable.setEditable(true);
          System.out.println("1");
    }else{
      col.setCellFactory(TextFieldTableCell.forTableColumn());
    col.setEditable(true);
    tblTable.setEditable(true);
    System.out.println("2");
      }

How is possible to check if a column taken using ResultSet is a primary or not and if it a Primary than to make cells of this column not editable.Im using JavaFX.

Im using this code but it doesn't work...Thank you!

 ObservableList<String> column = FXCollections.observableArrayList();
    HashSet<String> set = new HashSet();
    DatabaseMetaData meta = conn.getMetaData();
    tblTable.getColumns().clear();
    ResultSet cols = meta.getColumns(comboDatabase.getValue(), null, cmbTable.getValue(), null);
    ResultSet pk = meta.getPrimaryKeys(comboDatabase.getValue(), null,cmbTable.getValue());
        while (pk.next()) {
        String primarykey = pk.getString("COLUMN_NAME");
        set.add(primarykey);
        }
    while (cols.next()) {
    String name = cols.getString("COLUMN_NAME");
    TableColumn col = new TableColumn(name);
    column.add(name);
    tblTable.getColumns().addAll(col);
  
    
      if(set.contains(column)){
    col.setCellFactory(TextFieldTableCell.forTableColumn());
    col.setEditable(false);
    tblTable.setEditable(true);
          System.out.println("1");
    }else{
      col.setCellFactory(TextFieldTableCell.forTableColumn());
    col.setEditable(true);
    tblTable.setEditable(true);
    System.out.println("2");
      }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文