- PreparedStatement
- 灵活指定sql语句中的变量,? 作为占位符。
- CallableStatement
- 对存储过程进行调用
- Transaction
- 事物处理
- Batch
- 批处理
- Movable Result
- 可前后移动的结果集
- resultSet.last()
- resultSet.getRow()返回值可以确定一共有多少条记录
- Updatable ResultSet
示例代码:
/**
* ## procedure
* create or replace procedure produce_name(
* v_a in number, v_b in number, v_ret out number, v_temp in out number)
* is
* begin
* if(v_a > v_b) then
* v_ret := v_a;
* else
* v_ret := v_b;
* end if;
* v_temp := v_temp+1;
* end;
*
*/
// 1. 加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "";//每种类型的数据库都有其固定的url格式,按照格式来就行
String user = "";
String password = "";
// 2. 获取数据库链接
Connection conn = DriverManager.getConnection(url, user, password);
// 3. 创建语句对象Statement
String sql = "{call procedure_name (?,?,?,?)}";
CallableStatement statement = conn.prepareCall(sql);
// 4. 设置输出参数
statement.registerOutParameter(3, Types.INTEGER);//第3个问号为输出参数
statement.registerOutParameter(4, Types.INTEGER);//第4个问号为输出参数
statement.setInt(1, 3);//第1个问号的值为3
statement.setInt(2, 4);//第2个问号的值为4
statement.setInt(4, 5);//第4个问号的值为5,在本例中该值未用到
//输出第3个,第4个值
System.out.println(statement.getInt(3));
System.out.println(statement.getInt(4));
//关闭
statement.close();
conn.close();
Connection conn = null;
Statement statement = null;
// 1. 加载驱动
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "";//每种类型的数据库都有其固定的url格式,按照格式来就行
String user = "";
String password = "";
// 2. 获取数据库链接
conn = DriverManager.getConnection(url, user, password);
//jdbc默认是自动提交的,所以这里需要设置为false
conn.setAutoCommit(false);
statement = conn.createStatement();
statement.addBatch("");
statement.addBatch("");
statement.addBatch("");
statement.executeBatch();
conn.commit();
//提交完后,需恢复设置
conn.setAutoCommit(true);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
if (conn != null){
try {
conn.rollback();
conn.setAutoCommit(true);
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}finally {
try {
if (statement != null) {
statement.close();
}
if (conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}