JDBC--数据库连接管理

1 数据库连接管理

在程序中数据库连接使用非常频繁,如果每次都创建连接,需要重复写相同的代码,会造成代码的大量繁杂,常规的做法是建立数据库连接工具类,对数库连接过程封装,简化数据库的连接过程,使用起来更加方便。

(1)属性配置文件

文件后缀名为.properties(存储的是key —value)
Properties类:为了读取*.properties文件而设计的,底层是io流,实现了map接口。限定了key和value都是字符串类型
load(InputStream inStream) 从输入流中读取属性列表(键和元素对)
getProperty(String key) 用指定的键在此属性列表中搜索属性。

(2)连接管理实现过程

a.创建配置文件:jdbc.properties
b.创建DBUtils.java工具类
第一步:给静态属性进行初始化,用来读取文件中配置数据
利用Properties对象读取配置文件中的连接数据库参数数据
第二步:封装数据库连接方法
创建getConnection封装数据库连接信息
第三步:关闭资源
创建close()关闭资源连接
c.创建调用测试类
使用getConnection方法获取连接对象。

2 配置文件信息

jdbc.driver = oracle.jdbc.driver.OracleDriver
jdbc.url = jdbc:oracle:thin:@localhost:1521:orcl
jdbc.user = scott
jdbc.password = tiger

3 DBUtils.java工具

public class DBUtils {
	/*
	 * 管理数据库连接:将不同类重复的代码进行抽取封装成一个数据库工具类。 (1) 工具类的方法一般是静态方法,方便直接调用 (2)
	 * 工具类一般是捕获异常进行处理 (3) 每次调用方法都需要创建局部变量,优化:定义为成员静态变量。
	 * (4)静态成员变量不是固定不变的,不便于维护。优化:定义一个配置文件。
	 */
	static String driver;// 连接数据库的驱动
	static String url;// 要连接数据库的路径
	static String user;// 连接数据库的用户名
	static String password;// 用户名所对应的密码

// 一、给静态属性进行初始化,用来读取文件中配置数据
	static {
		try {
			// 配置文件对象
			Properties p = new Properties();
			// 用于读取文件字节流
			InputStream is = DBUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
			// 从输入流中读取键值对
			p.load(is);
			// 通过指定的键读取值
			driver = p.getProperty("jdbc.driver");
			url = p.getProperty("jdbc.url");
			user = p.getProperty("jdbc.user");
			password = p.getProperty("jdbc.password");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	// 二、获取连接对象
	public static Connection getConnection() {
		try {
			// 1.加载(内部注册)驱动
			String className = driver;
			Class.forName(className);
			// 2.连接数据库,查找并且尝试连接数据库
			Connection c = DriverManager.getConnection(url, user, password);
			// c是局部变量,因此也要定义在try中。
			return c;
		} catch (Exception e) {
			e.printStackTrace();
			/*
			 * 程序执行时,若发现异常会进行捕获处理,就导致无法执行return返回结果,这样就违背了方法的定义。
			 * 因此在Catch捕获处理时需要对异常进行throw处理,
			 */
			throw new RuntimeException();

		}

	}

	// 三、关闭连接
	public static void close(Connection c) {
		// 先判断是否连接成功,连接成功则关闭连接资源,否则就不需要关闭
		if (c != null) {
			// close()关闭连接资源自身带有异常
			try {
				c.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

4 调用测试类

public static void main(String[] args) {
	// 1.获取链接对象
	Connection c = DBUtils.getConnection();
	try {
		// 2.创建语句操作对象
		Statement st = c.createStatement();
		// 3.定义sql语句(查询数据)
		String sql = "SELECT * FROM demo";
		ResultSet rs = st.executeQuery(sql);
		// 4.遍历结果集
		while (rs.next()) {
			int id = rs.getInt("id");
			String name = rs.getString("name");
			System.out.println(id + "====" + name);
		}
	} catch (SQLException se) {
		se.printStackTrace();
	} finally {
		// 5.关闭资源
		DBUtils.close(c);
	}
}

5 结果

1====coco
2====ano
3====yige
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值