数据库连接工具类----JdbcUtil的写法集合

连接数据库需要的包jar

1.初级者:完成连接效果即可。

需要的包.jar
在这里插入图片描述

public class Util {
	/**
	 * 得到连接
	 * @return 连接对象
	 * @throws Exception
	 */
	public static Connection getcon() throws Exception{
		Class.forName("com.mysql.jdbc.Driver");
		String url="jdbc:mysql://localhost:3306/library";
		Connection con=DriverManager.getConnection(url,"root","123456");
		return con;
	}
	/**
	 * 释放资源
	 * @param rs 结果集对象
	 * @param ps 语句对象
	 * @param con 连接对象
	 * @throws Exception
	 */
	public static void close(ResultSet rs,PreparedStatement ps,Connection con) throws Exception{
		rs.close();
		ps.close();
		con.close();
	}


}

2.中级者:外部文件更改连接数据库的数据源。

数据源写在properties文件里面(一般写在src文件夹下面)
在这里插入图片描述

在这里插入代码片public class DBUtils {
	/**
	 * 0. 设置数据源的四要素:驱动、连接、用户名、密码
	 */
	private static String DRIVER;
	private static String URL;
	private static String UNAME;
	private static String UPWD;


	/**
	 * 1. 加载数据库驱动
	 * 高内聚,低耦合
	 * 
	 */
	static {
		try {
			//1.加载外部的db.properties文件
			InputStream is = DBUtils.class.getResourceAsStream("/db.properties");
			//2.实例化一个properties对象
			Properties prop = new Properties();
			//3.properties对象加载is流
			prop.load(is);
			//4.通过properties对象,获得db.properties文件中的值
			DRIVER = prop.getProperty("driver");  //从properties对象中找名叫driver的参数
			URL = prop.getProperty("url");
			UNAME = prop.getProperty("name");
			UPWD = prop.getProperty("pass");
		
			Class.forName(DRIVER);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 2. 获得数据库连接
	 */
	public static Connection getConnection() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(URL, UNAME, UPWD);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}

	/**
	 * 3. 关闭数据库连接,释放资源
	 */
	public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
		try {
			if (conn != null) {
				conn.close();
			}

			if (ps != null) {
				ps.close();
			}

			if (rs != null) {
				rs.close();
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public static void close(Connection conn, PreparedStatement ps) {
		close(conn, ps, null);
	}

	public static void close(Connection conn) {
		close(conn, null, null);
	}

}

3.高级者:使用数据库连接池。(德鲁伊连接池为例)

需要的包.jar
在这里插入图片描述
德鲁伊的properties文件
在这里插入图片描述

public class DruidUtils {

	// 1.声明druid数据源工厂对象
	private static DataSource dataSource;
	
	/**
	 * 1. 加载数据库驱动
	 */
	static {
		try {
		//2.加载druid文件
			InputStream is = DruidUtils.class.getResourceAsStream("/druid.properties");
			Properties prop = new Properties();
			prop.load(is);
			//3.调用德鲁伊数据源工厂函数创建数据源
			dataSource = DruidDataSourceFactory.createDataSource(prop);
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	/**
	 * 2. 获得数据库连接
	 */
	public static Connection getConnection() {
		Connection conn = null;
		try {
			conn = dataSource.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}

	/**
	 * 3. 关闭数据库连接,释放资源
	 */
	public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
		try {
			if (conn != null) {
				conn.close();
			}

			if (ps != null) {
				ps.close();
			}

			if (rs != null) {
				rs.close();
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void close(Connection conn, PreparedStatement ps) {
		close(conn, ps, null);
	}

	public static void close(Connection conn) {
		close(conn, null, null);
	}

}

4.大神级:使用Spring Jdbc框架。

在3的基础是加一个返回数据源的方法即可!!!

//返回数据源
	public static  DataSource getDateSource() {
		return dataSource;
	}

完整代码如下:

public class JDBCTemplateUtils {

	// 声明druid数据源工厂对象
	private static DataSource dataSource;
	
	/**
	 * 1. 加载数据库驱动
	 */
	static {
		try {
			InputStream is = JDBCTemplateUtils.class.getResourceAsStream("/druid.properties");
			Properties prop = new Properties();
			prop.load(is);
			
			dataSource = DruidDataSourceFactory.createDataSource(prop);
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	//2.返回数据源
	public static  DataSource getDateSource() {
		return dataSource;
	}
	

	/**
	 * 2. 获得数据库连接
	 */
	public static Connection getConnection() {
		Connection conn = null;
		try {
			conn = dataSource.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}

	/**
	 * 3. 关闭数据库连接,释放资源
	 */
	public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
		try {
			if (conn != null) {
				conn.close();
			}

			if (ps != null) {
				ps.close();
			}

			if (rs != null) {
				rs.close();
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void close(Connection conn, PreparedStatement ps) {
		close(conn, ps, null);
	}

	public static void close(Connection conn) {
		close(conn, null, null);
	}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值