1、支持缓冲区的数据库: Oracle、sql server
不支持缓存区的数据库: mysql
2、PrepareStateMent 先存缓冲区、效率高、防止sql注入。
3、带有参数的执行存储过程
public void test3() {
Connection conn = null;CallableStatement statement = null;
ResultSet reSet = null;
try {
// 获取连接对象
conn = jdbcUtil.getConnection();
// 查询sql语句
String sql = "CALL proc.findById(?)";
//执行存储过程
statement=conn.prepareCall(sql);
//设置参数
statement.setInt(0, 9);
//执行存储过程
reSet=statement.executeQuery();
} catch (Exception e) {
jdbcUtil.close(conn, statement, reSet);
}
}
带输出参数的存储过程
@Test
public void test4() {
Connection conn = null;
CallableStatement statement = null;
ResultSet reSet = null;
try {
// 获取连接对象
conn = jdbcUtil.getConnection();
// 查询sql语句
String sql = "CALL proc.findById(?,?)";
//执行存储过程
statement=conn.prepareCall(sql);
//设置参数
statement.setInt(0, 9);
//设置输出参数 位置 类型
statement.registerOutParameter(2, java.sql.Types.VARCHAR);
//执行存储过程 获取输出参数值
String result=statement.getString(1);
//输出
System.out.println(result);
} catch (Exception e) {
jdbcUtil.close(conn, statement, reSet);
}
}
写路径的方法:
jdbcUtil.class.getResourceAsStream("./文件名");