如何在JDBC PreparedStatement中使用MySQL ENUM类型?

时间:2018-06-18 19:51:43

标签: java mysql jdbc enums

我有一个Java枚举TradeStatus,对应于交易记录表中定义的SQL类型。我希望能够将此类型与PreparedStatement一起使用。通常我可以使用setString(int parameterIndex, String x)函数设置值,但是当我想为状态设置null值时,我的难度会产生。

setNull(int parameterIndex, int sqlType)要求将JDBC SQL type列设置为null。我不知道使用SQL枚举类型的类型。 如何将枚举类型的SQL列值设置为null

附录1:Java TradeStatus定义

public enum TradeStatus {

    UNKNOWN("Unknown", true),
    FINALIZE_TERMS("Finalize Terms", true),
    PAYMENT_INFO("Payment Info", true),
    SETTLEMENT("Settlement", true),
    COMPLETED("Completed", false),
    DEACTIVATED("Deactivated", false);

    private String name;
    private boolean isOutstanding;

    TradeStatus(String name, boolean isOutstanding) {
        this.name = name;
        this.isOutstanding = isOutstanding;
    }

    public boolean getIsOutstanding() {
        return isOutstanding;
    }

    @Override
    public String toString() {
        return name;
    }
}

附录2:SQL status列定义

CREATE TABLE traderecords (
    ...
    status ENUM('Unknown', 'Finalize Terms', 'Payment Info', 'Settlement', 'Completed', 'Deactivated'),
    ...
);

0 个答案:

没有答案