原理:java应用程序访问数据库的过程是:
①装载数据库驱动程序;
②通过jdbc建立数据库连接;
③访问数据库,执行sql语句;
④断开数据库连接。
代码如下:
Public void FindAllUsers(){
//1、装载sqlserver驱动对象
DriverManager.registerDriver(new SQLServerDriver());
//2、通过JDBC建立数据库连接
Connection con =DriverManager.getConnection("jdbc:sqlserver://192.168.2.6:1433;
DatabaseName=customer", "sa", "123");
//3、创建状态
Statement state =con.createStatement();
//4、查询数据库并返回结果
ResultSet result =state.executeQuery("select * from users");
//5、输出查询结果
while(result.next()){
System.out.println(result.getString("email"));
}
//6、断开数据库连接
result.close();
state.close();
con.close();
}
“数据库连接”是一种稀缺的资源,为了保障网站的正常使用,应该对其进行妥善管理。其实我们查询完数据库后,如果不关闭连接,而是暂时存放起来,当别人使用时,把这个连接给他们使用。就避免了一次建立数据库连接和断开的操作时间消耗。
提供数据库连接服务:
① 编写class 实现DataSource 接口
② 在class构造器一次性创建10个连接,将连接保存LinkedList中
③ 实现getConnection 从 LinkedList中返回一个连接
④ 提供将连接放回连接池中方法
1连接池代码:
public class MyDataSource implements DataSource {
//链表 --- 实现栈结构
privateLinkedList dataSources = new LinkedList();
//初始化连接数量
publicMyDataSource() {
//一次性创建10个连接
for(int i = 0;
i < 10;
i++) {
try {
//1、装载sqlserver驱动对象
DriverManager.registerDriver(new SQLServerDriver());
//2、通过JDBC建立数据库连接
Connection con =DriverManager.getConnection(
"jdbc:sqlserver://192.168.2.6:1433;
DatabaseName=customer", "sa", "123");
//3、将连接加入连接池中
dataSources.add(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
publicConnection getConnection() throws SQLException {
//取出连接池中一个连接
finalConnection conn = dataSources.removeFirst();
// 删除第一个连接返回
returnconn;
}
//将连接放回连接池
publicvoid releaseConnection(Connection conn) {
dataSources.add(conn);
}
}
【笔记|数据库连接池】2使用连接池重构我们的用户函数:
//查询所有用户
Public void FindAllUsers(){
//1、使用连接池建立数据库连接
MyDataSource dataSource = new MyDataSource();
Connection conn =dataSource.getConnection();
//2、创建状态
Statement state =con.createStatement();
//3、查询数据库并返回结果
ResultSet result =state.executeQuery("select * from users");
//4、输出查询结果
while(result.next()){
System.out.println(result.getString("email"));
}
//5、断开数据库连接
result.close();
state.close();
//6、归还数据库连接给连接池
dataSource.releaseConnection(conn);
}
推荐阅读
- 笔记|java中使用if...else来判断学生成绩等级
- 笔记|java中使用for循环计算1到100之间的偶数和
- 程序人生|我坚持在 CSDN 写了一年的博客,起飞了吗!((复盘拿到的奖品))
- 程序人生|为什么要写博客(写博客可以给我们带来什么好处?)
- 职场|粉丝问我,写CSDN博客到底为了什么()
- JAVA人生|工作3年程序员晒出2月工资条,看完扎心了
- 程序人生|在阿里干了10年Java开发的表哥放假回来了,聊完之后大彻大悟
- JAVA人生|公司8年老Java开发接私活被抓了,我说他最近咋这么飘
- Java|开年新来一个卷王,主动加班,张口闭口就是高并发,太让人崩溃...