Day20190610:JDBC封装工具类

本文介绍了一个用于Java应用程序的数据库操作基类(BaseDao)的设计与实现,该类提供了连接数据库、执行SQL语句(增删改查)、关闭连接等通用功能,通过静态代码块加载数据库配置,实现了高效且灵活的数据库交互。

package com.yang.DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class BaseDao {


	private Connection conn = null;//连接对象
	private PreparedStatement ps = null;//执行SQL语句
	private ResultSet rs = null;//结果集
	private static String driverClass;
	private static String url;
	private static String username;
	private static String password;
	
	static {
		//静态代码块,性能高,只加载一次
		try {
			Properties p = new Properties();
			p.load(BaseDao.class.getClassLoader().getResourceAsStream("jdbc.properties"));
			driverClass = (String)p.get("driverClass");
			url = (String)p.get("url");
			username = (String)p.get("username");
			password = (String)p.get("password");
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		
	}

	/**
	 * 01-打开数据库连接
	 */
	public void openConn() {
		try {
			Class.forName(driverClass);
			conn=DriverManager.getConnection(url,username,password);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 02-通用的执行增删改
	 */
	public int myexecuteUpdate(String sql,Object[] params) {
		this.openConn();//打开数据库连接
		try {
			ps=conn.prepareStatement(sql);
			if(params!=null) {
				for(int i=0;i<params.length;i++) {
					ps.setObject(i+1, params[i]);
				}
			}
			return ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			this.closeConn();//关闭数据库
		}
		return 0;
	}

	/**
	 * 03-通用的执行查询的方法
	 */
	public ResultSet myexecuteQuery(String sql,Object[] params) {
		this.openConn();
		try {
			ps=conn.prepareStatement(sql);
			if(params!=null){
				for (int i = 0; i < params.length; i++) {
					ps.setObject(i+1, params[i]);
				}
			}
			rs=ps.executeQuery();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			//查询的此处不能提前关闭数据库。不然话结果集合没法遍历
		}
		return rs;
	}

	/**
	 * 04-关闭数据库
	 */
	protected void closeConn() {
		try {
			if(rs!=null){
				rs.close();
			}
			if(ps!=null){
				ps.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	
	}
	
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值