为了账号安全,请及时绑定邮箱和手机立即绑定

检查数据库中的现有条目 + 自动增量 ID ->多个条件

检查数据库中的现有条目 + 自动增量 ID ->多个条件

绝地无双 2022-09-14 16:26:05
我正在创建一个GUI应用程序,其中包含一个用户表单来生成工作表,这些工作表保存在H2数据库中,对于用户表单,我手动输入文本字段中的工作表编号和日期选择器中的日期。每张纸都有其ID,该ID在该月是唯一的。为该月创建的第一个工作表的 ID 为 1,第 2 个为 2,依此类推,但对于下个月,ID 应从 1 重新启动。我需要检查该条目是否已存在于该月具有该工作表编号的数据库中。我在数据库中创建了另一列,其中存储了我从文本字段中提取的数字+月+年,并在那里进行了检查,但我正在寻找另一种方法,而不必创建额外的列。以下是设置器和获取器(我只粘贴了 3 个值):public class FiseDetails {    private final IntegerProperty sheetNumber;    private final ObjectProperty<Date> sheetDate;    private final StringProperty numberAndDate;public FiseDetails(Integer sheetNumber, Date sheetDate, String numberAndDate) {        this.sheetNumber = new SimpleIntegerProperty(sheetNumber);        this.sheetDate = new SimpleObjectProperty<>(sheetDate);        this.numberAndDate = new SimpleStringProperty(numberAndDate);}    public Integer getSheetNumber() {        return sheetNumber.get();    }    public void setSheetNumber(Integer value) {        sheetNumber.set(value);    }    public IntegerProperty SheetNumberProperty() {        return sheetNumber;    }    public Date getSheetDate() {        return sheetDate.get();    }    public void setSheetDate(Date value) {        sheetDate.set(value);    }    public ObjectProperty SheetDateProperty() {        return sheetDate;    }    public String getNumberAndDate() {        return numberAndDate.get();    }    public void setNumberAndDate(String value) {        numberAndDate.set(value);    }    public StringProperty NumberAndDateProperty() {        return numberAndDate;    }}我的问题是,如何有效地检查该月的数据库中是否已存在工作表编号,而无需创建额外的列。如果您认为实际的解决方案是最好的,请告诉我,因为额外的列是唯一唯一的列,因此当我需要从数据库中删除行时,我也使用该列。另外,我想不出一个解决方案来自动递增工作表编号并将其设置为文本字段,例如检查当前月份的最后一个工作表编号并将其设置为“txt_SheetNumber”文本字段,如果没有将其设置为1,那么每当我初始化应用程序时,文本字段中已有工作表编号。如果你能帮助我,那将不胜感激。这是我第一次使用Java或任何其他编程语言,所以请随时对任何方面发表评论。该应用程序对我来说只是为了让我的工作更轻松。
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

经过一番挖掘,我找到了第二个问题的解决方案。让我知道我是否会改进它。


int lastId() {


    int newSheetNumber=0;

    String query = "SELECT MAX(ID) FROM SHEETSDB WHERE MONTH(`SHEETDATE`)=MONTH(NOW()) AND YEAR(`SHEETDATE`)=YEAR(NOW())";

    try {

        preparedStatement = conn.prepareStatement(query);


        rs = preparedStatement.executeQuery();

        if (!rs.next()) {

            newSheetNumber = 1;

        }else {

            newSheetNumber = rs.getInt(1) + 1;

        }

        preparedStatement.close();

        rs.close();

        //System.out.println("The new sheet is: " + newSheetNumber);

    } catch (SQLException ex) {

        System.err.println("Error " + ex);

    }

    return newSheetNumber;

}


查看完整回答
反对 回复 2022-09-14
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信