Insert(UCanAccess)上的JDBC PreparedStatement默认值

时间:2017-07-05 12:11:14

标签: sql jdbc prepared-statement default ucanaccess

我想知道如何通过UCanAccess获取新插入的MS Access行的默认值。

表:my_tbl

Column   Type
-------+-----------------------
ID     | PrimaryKey, AutoNumber
Label  | Text
DT     | Date/Time, Default: Now()

代码

PreparedStatement st = conn.prepareStatement("INSERT INTO my_tbl (Label) VALUES (?)", Statement.RETURN_GENERATED_KEYS);
st.setString(1, "my new label");

int insertResult = st.executeUpdate();
if(insertResult > 0) {
    ResultSet rs = st.getGeneratedKeys();
    rs.next();
    System.out.println("ID: " + rs.getInt(1));
}

//How do I get the generated value of DT

限制

我无法使用关键字DEFAULT,因为UCanAccess会抛出SQLException(SO discussion about DEFAULT):

Caused by: org.hsqldb.HsqlException: DEFAULT keyword cannot be used as column has no DEFAULT

你有另一种解决方案吗?

1 个答案:

答案 0 :(得分:1)

  

如何获取DT的生成值

您需要使用rs.getInt(1)返回的值来执行表单

的另一个SELECT查询
SELECT DT FROM my_tbl WHERE ID = ?

然后通过为该查询调用executeQuery来生成ResultSet中的值。