JDBC调Oracle数据库中带参的存储过程

创建基本数据访问类

/**
 * @author 
 * @version 1.0
 * @Description 基本数据访问类(获取数据库连接 关闭资源)
 * @date 2020
 */


public class BaseDao {

    static {

        //加载驱动
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    /**
     * @return java.sql.Connection
     * @Author 
     * @Description 获取数据库连接 //TODO
     * @Date 2020
     * @Param []
     */
    public static java.sql.Connection getConnection() throws SQLException {


        return DriverManager.getConnection("jdbc:oracle:thin:@192.168.60.10:1521:orcl", "wateruser", "orcl");


    }

    /**
     * @return void
     * @Author 
     * @Description 关闭资源//TODO
     * @Date 2020
     * @Param [rs, statement, connection]
     */
    public static void closeAll(java.sql.ResultSet rs, java.sql.Statement statement, java.sql.Connection connection) {

        try {
            if (rs != null) {
                rs.close();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        if (statement != null){

            try {
                statement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        if (connection != null){
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

    }

}

业主表实体类

/**
 * @author 
 * @version 1.0
 * @Description 业主表实体类
 * @date 2020
 */


public class Owners {

    private Long id;//编号
    private String name;//业主名称
    private Long address;//地址id
    private String housenumber;//门牌号
    private String watermeter;//水表编号
    private java.util.Date adddate;//增加日期
    private Long ownertypeid;//业主类型

   //一系列Getter、Setter方法 省略...

JDBC调用存储过程

/**
 * @author 
 * @version 1.0
 * @Description JDBC调用存储过程
 * @date 2020-11
 */


public class OwnersProDao {
    /**
     *
     * @Author 
     * @Description 增加业主信息(存储过程)//TODO
     * @Date  2020
     * @Param [owners]
     * @return void
     */
    public static long add(Owners owners){
        long id = 0;
        java.sql.Connection conn = null;
        java.sql.CallableStatement stmt=null;

        try {
            conn=BaseDao.getConnection();
            stmt=conn.prepareCall("{call pro_owners_add(?,?,?,?,?,?)}");
            stmt.setString(1, owners.getName());
            stmt.setLong(2,owners.getAddress());
            stmt.setString(3,owners.getHousenumber());
            stmt.setString(4,owners.getWatermeter());
            stmt.setLong(5,owners.getOwnertypeid());
            
            //注册传出参数的类型
            stmt.registerOutParameter(6, OracleTypes.NUMBER);

            stmt.execute();
            //执行后拿出传出参数值
            id=stmt.getLong(6);
            
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally{
            BaseDao.closeAll(null,stmt,conn);
        }
        return  id;

    }

}

测试JDBC调用存储过程

/**
 * @author 
 * @version 1.0
 * @Description 测试JDBC调用存储过程
 * @date 2020-11
 */

public class Test4 {
    public static void main(String[] args) {
        Owners owners=new Owners();

        owners.setName("姜子牙");
        owners.setAddress(2L);
        owners.setHousenumber("2-1234");
        owners.setOwnertypeid(1L);
        owners.setWatermeter("333456");
        
		//输出返回的参数
        long add = OwnersProDao.add(owners);
        System.out.println(add);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值