Java连接Oracle—数据访问层—增删改查

分层模式是一种常见的架构模式,今天我就分享一下,最底层的数据访问层,访问Oracle数据库并进行增删改查的代码!
要实现访问Oracle数据库,需要加载一个ojdbc.jar包,下载这个jar包后,将其放入项目的目录里,然后build path就行了。
下面就直接分享代码了!

import java.sql.*;
import java.util.List;

public abstract class BaseDao {
	private final static String DBDriver="oracle.jdbc.OracleDriver"; 		**//驱动路径,就是刚导入的jar包**
	private final static String DBURL="jdbc:oracle:thin:@localhost:1521:orcl"; 	
	**//@前面的照写,后面的localhost代表本地服务器,1521为Oracle数据库的端口号,orcl是数据库安装时设置的数据库名.**
	private final static String DBUser="root"; //数据库名称
	private final static String DBPasswd="123456";  //密码
	
	public static Connection conn = null;
	public ResultSet rs = null;
	public PreparedStatement pst;
	
	
	/加载驱动、创建链接
	public static Connection getConnection(){
			
			try {
				Class.forName(DBDriver);
				conn = DriverManager.getConnection(DBURL,DBUser,DBPasswd);
			} catch (Exception e) {
				e.printStackTrace();
			}
			if(conn == null)
			{
				System.out.print("Line:27   数据库连接失败!");
			}
			
			return conn;
		}
	
	
	/查询
	public ResultSet doQuery(String sql)
	{
		return doQuery(sql , new Object[]{});
	}
	
	public ResultSet doQuery(String sql , Object[] param){  	
	//sql需要编写后传入,sql可以带参数,带参的地方用?代替,第二个参数是需要传入的参数数组
		conn = BaseDao.getConnection();
		try {
			pst = conn.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		for(int i=0 ; i<param.length ; i++)
		{
			try {
				pst.setObject(i+1, param[i]);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		try {
			rs = pst.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rs;
	}
	
	
	更新
	public int doUpdate(String sql){
		return doUpdate(sql , new Object[]{});
	}
	
	public int doUpdate(String sql , Object[] param){
	//sql需要编写后传入,sql可以带参数,带参的地方用?代替,第二个参数是需要传入的参数数组
		int result = 0;
		conn = BaseDao.getConnection();
		try {
			pst = conn.prepareStatement(sql);
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		for(int i=0 ; i<param.length ; i++)
		{
			try {
				pst.setObject(i+1, param[i]);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		try {
			result = pst.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return result;
		
	}
	
	
	插入
	public int doInsert(String sql)
	{
		return doUpdate(sql);
		
	}
	public int doInsert(String sql , Object[] param)
	{
		return doUpdate(sql , param);
		
	}
	
	
	//删除
	public int doDelete(String sql)
	{
		return doUpdate(sql);
	}
	public int doDelete(String sql , Object[] param)
	//sql需要编写后传入,sql可以带参数,带参的地方用?代替,第二个参数是需要传入的参数数组
	{
		return doUpdate(sql , param);
	}
	
	
	//关闭连接
	public void closeConnection(){
		if(rs!=null)
		{
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(pst!=null)
		{
			try {
				pst.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(conn!=null)
		{
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	//对结果集进行处理
	public abstract <T> List<T> resultSetToList(ResultSet ret);
}

这里查询、修改、更新、删除都重写了两个方法,一个带参的,一个不带参,增加了代码的灵活性,不过也使代码臃肿了,你们可以自行简化。需要注意的是,查询返回的是ResutSet结果集,其他三个操作都基于更新,返回的是int类型影响的行数,在业务逻辑层应用相对应的变量接收返回值!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值