jdbc操作数据库时,最基本的三种接口是Statement PreparedStatment CallableStatement
(1)Statement
createStatement(int resultSetType, int resultSetConcurrency)
createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)(JDBC 3.0)
resultSetType
- 结果集类型,它是 ResultSet.TYPE_FORWARD_ONLY(不可滚动结果集)
、 ResultSet.TYPE_SCROLL_INSENSITIVE(可滚动结果集,受数据库更新影响的
)
或 ResultSet.TYPE_SCROLL_SENSITIVE(可滚动结果集,不
受数据库更新影响的)
之一
resultSetConcurrency
- 并发类型;它是 ResultSet.CONCUR_READ_ONLY
(只读结果集)或 ResultSet.CONCUR_UPDATABLE (可更新结果集)
之一。
resultSetHoldability
- 以下 ResultSet
常量之一: ResultSet.HOLD_CURSORS_OVER_COMMIT
(提交修改后,不关闭结果集)或 ResultSet.CLOSE_CURSORS_AT_COMMIT (提交修改后,关闭结果集)
说明:resultSetType,resultSetConcurrency,resultSetHoldability的使用是有限制的。
有的数据库并不支持可滚动结果集,可更新结果集,提交修改后不关闭结果集。可以通过conn.getMetaData()来获取DataBaseMetaData对象判断是否支持上述功能。
(2)PreparedStatement
prepareStatement(String sql)
prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
prepareStatement(String sql, int autoGeneratedKeys)
prepareStatement(String sql, int[] columnIndexes)
prepareStatement(String sql, String[] columnNames)
autoGeneratedKeys可以为Statement.RETURN_GENERATED_KEYS/NO_GENERATED_KEYS
eg:PrepareStatement st=conn.prepareStatemnt(sql,Statement.RETURN_GENERATED_KEYS);
st.executeQuery();
ResultSet rs=st.getGeneratedKeys();
if (rs.next()){
int key=ts.getInt(1);
}
(3)CallableStatement
prepareCall(String sql)
prepareCall(String sql, int resultSetType, int resultSetConcurrency)
prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)