Java程序调用Oracle

1. java程序调用存储过程

public void procedureTest(){
		String sql = "{ call pro_test111(?,?,?)}";
		CallableStatement call = null;
		try {
			call = conn.prepareCall(sql);
			//IN需要set  OUT需要reister
			call.setString(1, "jdbc");
			call.setInt(2, 2);
			call.setString(3, "default");
			call.registerOutParameter(3, Types.VARCHAR);
			call.execute();
			//拿到返回值
			Object object = call.getObject(3);
			System.out.println(object);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			//关闭连接
			DBConfig.close(call, conn);
		}
	}

2. DBUtils工具调用Oracle

2.1 首先引入oracle6.jar commons-dbutils-1.4.jar c3p0-0.9.1.2.jar包

2.2 在新建db.properties

poolName=c3p0
className=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
username=chalco1129
password=chalco1129
initialPoolSize=10
minPoolSize=20
maxPoolSize=50
maxIdleTime=30

2.3 新建数据库连接配置信息工具类

package com.isoftstone.utils;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
 * 数据库连接配置信息
 * @author mjzhud
 *
 */
public class DBConfiguration {
	private static Properties pro;
	static {
		//加载属性文件,读取数据库连接配置信息
		pro = new Properties();
		try {
			pro.load(DBConfiguration.class.getResourceAsStream("/db.properties"));
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("未找到配置文件!!!");
		}
	}
	
	public static Connection getConnection() {
		if ("c3p0".equals(pro.getProperty("poolName"))) return getC3P0Connection();
		if ("dbcp".equals(pro.getProperty("poolName"))) return getC3P0Connection();
		return null;
	}
	
	
	
	private static Connection getC3P0Connection(){
		ComboPooledDataSource c3p0 = new ComboPooledDataSource();
		try {
			c3p0.setDriverClass(pro.getProperty("className"));
			c3p0.setJdbcUrl(pro.getProperty("url"));
			c3p0.setUser(pro.getProperty("username"));
			c3p0.setPassword(pro.getProperty("password"));
			c3p0.setInitialPoolSize(Integer.valueOf(pro.getProperty("initialPoolSize")));
			c3p0.setMinPoolSize(Integer.valueOf(pro.getProperty("minPoolSize")));
			c3p0.setMaxPoolSize(Integer.valueOf(pro.getProperty("maxPoolSize")));
			c3p0.setMaxIdleTime(Integer.valueOf(pro.getProperty("maxIdleTime")));
			return c3p0.getConnection();
		} catch (PropertyVetoException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("连接失败,检查用户名和密码");
		}
		return null;
	}
	
	public static void close(Statement statement,Connection conn){
		try {
			if (statement != null) statement.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
                try {
			if (conn != null) conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public static void close(ResultSet rs,Statement statement,Connection conn){
		try {
			if (rs != null) rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		close(statement,conn);
	}
}

2.4 新建JdbcDBUtil工具类

package com.isoftstone.utils;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.junit.Before;
import org.junit.Test;
import bios.report.core.chart.t;
import com.isoftstone.manager.bean.Student;
import com.isoftstone.utils.DBConfiguration;

public class JdbcDBUtil {

	private static Connection conn = DBConfiguration.getConnection();
	public static QueryRunner runner = new QueryRunner();
	
	
	public static int add(String sql) throws SQLException{
		int count = -1;
		try {
			conn.setAutoCommit(false);
			count = runner.update(conn , sql);
		} catch (Exception e) {
			conn.rollback();
		} finally {
			conn.commit();
		}
		if (count > 0) {
			System.out.println("一条新增成功");
			return 1;
		}
		System.out.println("一条新增失败");
		return -1;
	}
	
	public static int add(String sql,Object[] params) throws SQLException{
		int count = -1;
		try {
			conn.setAutoCommit(false);
			count = runner.update(conn , sql, params);
		} catch (Exception e) {
			conn.rollback();
		} finally {
			conn.commit();
		}
		if (count > 0) {
			System.out.println("一条新增成功");
			return 1;
		}
		System.out.println("一条新增失败");
		return -1;
	}
	public static int update(String sql) throws SQLException{
		try {
			conn.setAutoCommit(false);
			runner.update(conn , sql);
		} catch (Exception e) {
			conn.rollback();
			return -1;
		} finally {
			conn.commit();
		}
		System.out.println("一条更新成功");
		return 1;
	}
	
	public static int update(String sql,Object[] params) throws SQLException{
		try {
			conn.setAutoCommit(false);
			runner.update(conn , sql, params);
		} catch (Exception e) {
			conn.rollback();
			return -1;
		} finally {
			conn.commit();
		}
		System.out.println("一条更新成功");
		return 1;
	}
	public static int delete(String sql) throws SQLException{
		try {
			conn.setAutoCommit(false);
			runner.update(conn , sql);
		} catch (Exception e) {
			conn.rollback();
			return -1;
		} finally {
			conn.commit();
		}
		System.out.println("一条删除成功");
		return 1;
	}
	
	public static int delete(String sql,Object[] params) throws SQLException{
		try {
			conn.setAutoCommit(false);
			runner.update(conn , sql, params);
		} catch (Exception e) {
			conn.rollback();
			return -1;
		} finally {
			conn.commit();
		}
		System.out.println("一条删除成功");
		return 1;
	}
	
	/**
	 * DBUtils批处理,只能处理同一预处理sql语句
	 * @param sql
	 * @param paramArr
	 * @return
	 * @throws SQLException
	 */
	public static int dbUtilsBatch(String sql,Object[][] paramArr) throws SQLException{
		int[] count = null;
		try {
			conn.setAutoCommit(false);
			count = runner.batch(conn , sql, paramArr);
		} catch (Exception e) {
			conn.rollback();
			return -1;
		} finally {
			conn.commit();
		}
		int updateCount = 0;
		if (count != null && count.length > 0) {
			for (int i : count) {
				if (i > 0) updateCount++;
	 		}
		}
		System.out.println("影响的行数="+updateCount);
		return 1;
	}
	
	/**
	 * Statement可以批量处理各种sql
	 * @param sqls
	 * @return
	 * @throws SQLException
	 */
	public static int statementBatch(String[] sqls) throws SQLException{
		Statement statement = conn.createStatement();
		for (String sql : sqls) {
			statement.addBatch(sql);
		}
		int[] count = null;
		try {
			conn.setAutoCommit(false);
			count = statement.executeBatch();
		} catch (Exception e) {
			conn.rollback();
			return -1;
		} finally {
			conn.commit();
			DBConfiguration.close(statement, conn);
		}
		int updateCount = 0;
		if (count != null && count.length > 0) {
			for (int i : count) {
				if (i > 0) updateCount++;
	 		}
		}
		System.out.println("影响的行数="+updateCount);
		return 1;
	}
	
	public static List<Map<String, Object>> queryList(String sql) throws SQLException{
		return runner.query(conn, sql, new MapListHandler());
	}
	public static List<Map<String, Object>> queryList(String sql,Object[] params) throws SQLException{
		return runner.query(conn, sql, new MapListHandler(),params);
	}
}

2.5 新建Bean类

package com.isoftstone.manager.bean;

public class Student {
	private long id;
	private String name;
	private int gender;
	private int age;
	private String email;
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getGender() {
		return gender;
	}
	public void setGender(int gender) {
		this.gender = gender;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", gender=" + gender
				+ ", age=" + age + ", email=" + email + "]";
	}
}

2.6 新建Dao接口

package com.isoftstone.manager.dao;
import java.sql.SQLException;
import java.util.List;
import com.isoftstone.manager.bean.Student;

public interface StudentDao {
	public int add(Student stu) throws SQLException;
	public int updateById(Student stu) throws SQLException;
	public int deleteById(int id) throws SQLException;
	public Student queryById(int id) throws SQLException;
	public List<Student> queryAll() throws SQLException;
}

2.7 新建Dao实现类

package com.isoftstone.manager.dao.impl;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.isoftstone.manager.bean.Student;
import com.isoftstone.manager.dao.StudentDao;
import com.isoftstone.utils.DBConfiguration;
import com.isoftstone.utils.JdbcDBUtil;

public class StudentDaoImpl implements StudentDao {

	public int add(Student stu) throws SQLException {
		String sql = "insert into stu values (seq_stu.nextval,?,?,?,?)";
		Object[] params = new Object[]{stu.getName(),stu.getGender(),stu.getAge(),stu.getEmail()};
		return JdbcDBUtil.add(sql,params);
	}

	public int updateById(Student stu) throws SQLException {
		String sql = "update stu set name = ?,gender=?,age=?,email=? where id = ?";
		Object[] params = new Object[]{stu.getName(),stu.getGender(),stu.getAge(),stu.getEmail(),stu.getId()};
		return JdbcDBUtil.update(sql,params);
	}

	public int deleteById(int id) throws SQLException {
		String sql = "delete from stu where id = " + id;
		return JdbcDBUtil.delete(sql);
	}

	public Student queryById(int id) throws SQLException {
		String sql = "select * from stu where id = ?";
		return JdbcDBUtil.runner.query(DBConfiguration.getConnection(), sql, new BeanHandler<Student>(Student.class),id);
	}

	public List<Student> queryAll() throws SQLException {
		String sql = "select * from stu where id = ?";
		return JdbcDBUtil.runner.query(DBConfiguration.getConnection(), sql, new BeanListHandler<Student>(Student.class));
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱梦君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值