JDBC 插入时的 PreparedStatement 默认值 (UCanAccess)
JDBC PreparedStatement default values on Insert (UCanAccess)
我想知道如何通过 UCanAccess 获取新插入的 MS Access 行的默认值。
Table: 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 ():
Caused by: org.hsqldb.HsqlException: DEFAULT keyword cannot be used as column has no DEFAULT
你有其他解决方案吗?
How do I get the generated value of DT
您将需要使用 rs.getInt(1)
返回的值来执行另一个 SELECT 形式的查询
SELECT DT FROM my_tbl WHERE ID = ?
然后从为该查询调用 executeQuery
生成的结果集中检索值。
我想知道如何通过 UCanAccess 获取新插入的 MS Access 行的默认值。
Table: 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 (
Caused by: org.hsqldb.HsqlException: DEFAULT keyword cannot be used as column has no DEFAULT
你有其他解决方案吗?
How do I get the generated value of DT
您将需要使用 rs.getInt(1)
返回的值来执行另一个 SELECT 形式的查询
SELECT DT FROM my_tbl WHERE ID = ?
然后从为该查询调用 executeQuery
生成的结果集中检索值。