前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用连接池连接数据库

使用连接池连接数据库

作者头像
微醺
发布2019-01-17 13:12:57
9050
发布2019-01-17 13:12:57
举报

连接数据库的步骤

我在网上看到的一个教程,感觉那个老师总结的特别好,他是引用<红楼梦>中的人物,将连接数据库的步骤进行了总结。 “贾琏欲执事” 贾:加载注册驱动。 琏:连接数据库 欲:获取预编译语句对象 执:执行预编译语句 事:释放资源

导入jar包

在这里插入图片描述
在这里插入图片描述

红线标注的就是导入的jar包,jar包可以直接去官网下载,下载完之后,直接复制到web-inf下的lib下就行。commons-pool-1.6.jar是连接池的jar包。

新学者可以先不用连接池

(这是注册用户时用到的代码,主要是sql语句不一样,就可以实现不同的功能)

代码语言:javascript
复制
//1.加载注册驱动
        		Class.forName("com.mysql.jdbc.Driver");
        		//2.连接数据库 建立连接
        		//url:  jdbc:mysql://主机地址:端口号/数据库
        		//user:数据库的用户名
        		//pwd:密码
        		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/user","root","123456");
        		//3.创建sql语句
        		String sql = "insert into user(Name,Password)values('"+user+"','"+pwd+"')";
        		//4.创建一个statement对象
        		Statement st = conn.createStatement();
        		//5.执行插入sql
        		int rs = st.executeUpdate(sql);
        		System.out.println(rs);
        		//6.关闭连接 释放资源
        		st.close();
        		conn.close();

使用连接池,使用配置文件连接数据库

为什么使用配置文件? 其实这里也用到了封装的思想,就是减少代码的耦合性。使用配置文件的好处:举个例子,当你在北京的一个公司上班,你把一个项目买到了新疆(意思就是很远的地方)。由于买方需要重新建立数据库,或者用自己公司的数据库,那么数据库名,密码什么的也就不一样了。如果买方懂编程还好,你可以告诉他改那一包下面的代码。但是,在公司的忌讳是严禁看源码的,这里涉及到知识产权的问题。所以就假设买方不懂源码。假设能看你的源码,你也不能让它改啊,因为他根本看不懂,再改到其他地方,那你的代码离崩溃也不远。这里就配置文件就解决了这个尴尬的问题。 在src下右键new->folder(相当于文件夹)把数据库配置问件放在下面。因为以后如果开发大型项目,不可能只有一个配置文件,这是便于管理配置文件。

在这里插入图片描述
在这里插入图片描述

这里我用的是db.properties,后缀是properties就是配置文件。配置文件的底层用的也是hashmap就是一个key,一个value。

对创键好的配置文件进行设置

代码语言:javascript
复制
#key=values格式
#连接数据库的四要素
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcdemo(数据库名称)
username=root(数据名)
password=123456(密码)

读取配置文件里的内容,获取连接对象,关闭连接

一般加载注册驱动只需要加载注册一次就行了,这样我们就想到静态代码块。只需要在程序启动是加载一次就行了。读取配置文件中的内容,我们想到了反射,只需要一个全限定名称就可以获取配置文件类,获取到里面的字段属性和方法。

代码语言:javascript
复制
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBUtil {
	private static Properties p = new Properties();//获取配置文件对象
	private static DataSource ds = null;//数据源对象为null
	// 1.加载注册驱动
	static {
		// 获取配置文件,转换成一个输入流
		try {
			p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));//从配置文件中读取配置信息
			// 获取数据源对象
			ds = BasicDataSourceFactory.createDataSource(p);//这是从连接池中获取连接对象    
		} catch (Exception e) {    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	// 2.获取连接对象
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = ds.getConnection();//获取连接对象
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;//返回连接对象
	}

	// 3.关闭连接
	public static void clossAll(Connection conn, Statement st, ResultSet rs) {
   //关闭连接遵循先开的最后关闭,不过关之前先看看是否为null,如果为null,就不需要关闭
		try {
			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (st != null) {
					st.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				try {
					if (conn != null) {
						conn.close();
					}
				} catch (Exception e2) {
					// TODO: handle exception
				}
			}
		}
	}
}

总结

为什么使用连接池?使用连接池的好处? 直接举个例子,如果你的家在河的一边,你的外婆家在河的另一边。假设没有交通工具可以过河,你只能通过架设一个桥来到你的外婆家去。没使用连接池之前,相当于每连接一个数据库你就架设了一个桥,当你到达河的对面,也就是对数据库的操作(增,删,查,改操作),你关闭数据库连接就相当于把桥销毁了。当你再次过河时还要重新架桥。这样就大大增加了cpu的工作量,效率会大大降低。所以,连接池就应运而生。连接池主要思路是,先给你建好几个连接对象,当你使用完毕,它没有销毁,只是返回给连接池,让你下次方便使用。所以这里使用连接池,可以大大增加效率。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 连接数据库的步骤
  • 导入jar包
  • 新学者可以先不用连接池
  • 使用连接池,使用配置文件连接数据库
  • 对创键好的配置文件进行设置
  • 读取配置文件里的内容,获取连接对象,关闭连接
  • 总结
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档