java中调用oracle的存储过程

基本步骤:
1.建立一个CallableStatement
2.得到一个CallableStatement的对象
调用过程语法
{call login(?,?,?)}
3.给in参数赋值
proc.setString(1, username);
4.如果是out参数的话,需要绑定类型
proc.registerOutParameter(1,类型)
两种类型
--java.sql.Types.INTEGER
--oracle.jdbc.OracleTypes.INTEGER
5.执行过程
proc.execute();
6.得到out参数

 

public class UserDAOImpl implements UserDAO {

	//connection可以写成属性的原因
	//因为数据库连接在一个项目中只有一个
	//是一个重量级的
	//statement和resutset不能在属性中定义
	private Connection connection;
	
	public UserDAOImpl() {
		// 使用构造器给Connection赋值
		if (connection==null){
			Conn conn =new Conn();
			this.connection=conn.getConn();
		}
	}
	public int login(String username, String password) {
		//定义方法是否执行成功的变量
		int result=0;
		
		
			// 定义一个CallableStatement
			//调用过程的类
			CallableStatement proc =null;
			//得到一个CallableStatement的对象
			try {
			proc=connection.prepareCall("{call login(?,?,?)}");
			
			//给in赋值
			proc.setString(1, username);
			proc.setString(2, password);
			
			//如果是out参数的话,需要绑定类型
			proc.registerOutParameter(3, oracle.jdbc.OracleTypes.INTEGER);
			
			//执行过程
			proc.execute();
			//得到out参数
			result=proc.getInt(3);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			//关闭连接
			try {
				proc.close();
				connection.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		
		return result;
	}

	public int modify(String password, int userid) {
		// TODO Auto-generated method stub
		return 0;
	}

}

你可能感兴趣的:(java,oracle,sql,jdbc)