简单数据库连接池实例java+mysql
一、编写数据库连接池DBUtil.java
package com.test.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBUtil
{
public static Context context = null;
public static DataSource ds = null;
public static Connection conn = null;
public static PreparedStatement pstmt = null;
public static PreparedStatement getPstmt(String sql)
{
try{
context = new InitialContext();
ds = (DataSource) context.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
pstmt = conn.prepareStatement(sql);
System.out.println("打开数据库连接池");
}
catch(NamingException e) {
e.printStackTrace();
}
catch(SQLException e) {
e.printStackTrace();
}
return pstmt;
}
public static ResultSet query(){
ResultSet rs = null;
try{
rs=pstmt.executeQuery();
}
catch(SQLException e) {
e.printStackTrace();
}
return rs;
}
public static int update()
{
int num = 0;
try{
num = pstmt.executeUpdate();
}
catch(SQLException e) {
e.printStackTrace();
}
return num;
}
public static void close()
{
try{
if(pstmt != null)
{
pstmt.close();
}
if(conn != null)
{
conn.close();
}
if(context != null)
{
context.close();
}
System.out.println("关闭数据库连接池");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
二、创建mysql数据库test,添加部门表department,其中2个字段分别为:
部门ID:department_id int 32 非空 主键
部门名称:department_name varchar 128 非空
三、编写JavaBean(以添加部门为例Department.java)
package com.test.bean;
public class Department {
public int departmentID;
public String departmentName;
public int getDepartmentID() {
return departmentID;
}
public void setDepartmentID(int departmentID) {
this.departmentID = departmentID;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
}
四、编写Dao文件DepartmentDao.java
package com.test.model;
import com.test.bean.Department;
public interface DepartmentDao {
void addDepartment(Department department);
}
五、编写Dao文件的实现DepartmentDaoImpl.java
package com.test.model;
import java.sql.ResultSet;
import com.test.bean.Department;
import com.test.util.DBUtil;
public class DepartmentDaoImpl implements DepartmentDao {
private int maxDepartmentID() {
String sql = "select max(department_id) from department";
DBUtil.getPstmt(sql);
ResultSet rs = DBUtil.query();
try {
if (rs != null && rs.next()) {
int max = rs.getInt(1);
if (max >= 0)
return max + 1;
}
System.out.println("获得最新的DepartmentID的sql:" + sql);
} catch (Exception e) {
e.printStackTrace();
System.out.println("获得最新的DepartmentID出错");
} finally {
DBUtil.close();
}
return 0;
}
@Override
public void addDepartment(Department department) {
int departmentID = maxDepartmentID();
String sql = "insert into department(department_id,department_name) values ('"
+ departmentID + "','" + department.departmentName + "') ";
try {
DBUtil.getPstmt(sql);
DBUtil.update();
System.out.println("添加部门sql:" + sql);
} catch (Exception e) {
e.printStackTrace();
System.out.println("添加部门出错");
} finally {
DBUtil.close();
}
}
}
六、编写添加部门的servlet:DepartmentAdd.java
package com.test.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.test.bean.Department;
import com.test.model.DepartmentDao;
import com.test.model.DepartmentDaoImpl;
public class DepartmentAdd extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String departmentName = request.getParameter("departmentName");
Department department = new Department();
department.departmentName= departmentName;
DepartmentDao departmentDao = new DepartmentDaoImpl();
departmentDao.addDepartment(department);
}
}
七、在web.xml中部署servlet
<servlet>
<servlet-name>DepartmentAdd</servlet-name>
<servlet-class>com.test.servlet.DepartmentAdd</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DepartmentAdd</servlet-name>
<url-pattern>/DepartmentAdd</url-pattern>
</servlet-mapping>
八、编写添加部门的jsp页面departmentadd.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>departmentadd</title>
</head>
<body>
<form action="DepartmentAdd" method="post">
部门名称:
<input type="text" name="departmentName" id="departmentName">
<input type="submit" value="提交">
</form>
</body>
</html>
九、注意:用tomcat部署,在conf文件下的context.xml文件改成如下:
name="jdbc/test"
url="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8"
十、在IE浏览器中输入如下网址即可输入并查看效果
http://localhost:8000/test/departmentadd.jsp
分享到:
相关推荐
在“prxool数据库连接池实例(带监控功能数据库连接池)”中,主要包含了监控功能,这是数据库连接池的一个重要特性。监控功能允许开发者实时查看连接池的状态,包括当前连接数、空闲连接数、已使用的连接数、等待的...
本实例将深入探讨C#中的数据库连接池,以及如何有效地利用它。 首先,数据库连接池是一种管理数据库连接的机制,它通过维护一组已打开的数据库连接,来减少创建和关闭连接的开销。在C#中,ADO.NET框架提供了内置的...
### Java编写数据库连接池实例详解 #### 一、引言 在Java开发中,数据库连接管理是一项非常重要的任务。为了提高应用程序的性能和资源利用效率,通常会使用数据库连接池来管理与数据库之间的连接。本文将详细介绍...
本文将详细介绍Proxool数据库连接池及其监控功能,通过一个实际的实例来展示其工作原理和使用方法。 Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级、高性能的数据库连接池解决方案。Proxool与其他...
数据库连接池是应用程序管理数据库连接的一种机制,它提高了数据库访问的效率和资源利用率。通过复用已建立的数据库连接,避免了频繁创建和关闭连接所消耗的时间和系统资源。连接池的基本思想是预先创建一定数量的...
"Mina+Mongodb+Mybatis+数据库连接池实例" 这个标题表明,我们将讨论一个具体的项目实例,它结合了多种技术,包括Mina(一个用于构建高性能、高可用性的网络应用程序的Java框架)、MongoDB(一个流行的NoSQL数据库...
在该模式下,整个应用程序仅创建一个数据库连接池实例,所有数据库操作共享这个实例中的连接资源。这种设计方式能够有效地减少数据库连接的创建和销毁次数,从而提升整体性能。 #### 核心概念与实现细节 1. **单...
在这个实例中,我们将讨论如何在基于Tomcat的Web服务器上使用JNDI来创建数据库连接池。 首先,理解JNDI的工作原理至关重要。JNDI的核心是名称绑定,即将一个名称(比如“jdbc/myDataSource”)与一个对象(如数据库...
这种设计遵循了软件设计模式中的“单例模式”,确保在整个应用程序生命周期中只有一个数据库连接池实例存在,从而保证了连接的统一管理和高效利用。 单例模式是一种常用的软件设计模式,它的主要目的是控制类的实例...
首先,需要创建一个数据库连接池实例,然后使用该实例获取可用的连接,finally,使用完毕后关闭连接。 ```java DBConnectionManager dbcm = DBConnectionManager.getInstance(); Connection conn = dbcm.get...
本实例中的"C#数据库连接池实例"可能包含一个或多个C#源代码文件,展示了如何在实际应用中使用SqlConnection类进行数据库操作,并利用连接池进行优化。这些DEMO代码通常会有详细的注释,指导开发者如何正确地初始化...
在Java Web开发中,数据库连接池是一种重要的技术,它能有效地管理和复用数据库连接,提高系统的性能和效率。本实例将介绍如何在Oracle XE数据库与Tomcat之间配置连接池。 首先,我们需要了解连接池的基本概念。...
下面,我们将详细讨论JSP中数据库连接池的实现、工作原理以及如何实例化。 1. **数据库连接池概念**: 数据库连接池是在应用服务器启动时创建的一组预设的数据库连接。这些连接在应用需要时被复用,而不是每次请求...
Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...
JavaWeb开发中,涉及到多个关键知识点,包括标签库、函数库、数据库连接池以及与Tomcat服务器相关的配置。以下是对这些知识点的详细说明: 1. **标签库**:在JavaWeb应用中,标签库(Tag Library)是用于简化HTML...
2. 创建一个连接池工厂类(如`ConnectionFactory`),用于根据名称创建并管理数据库连接池实例。 ```java public class ConnectionFactory { private Map, DataSource> dataSourceMap; public void ...
本文将深入探讨如何在C#中使用MySQL数据库连接池。 首先,我们需要了解什么是数据库连接池。数据库连接池是一种资源管理技术,它预先创建并维护一定数量的数据库连接,当应用需要时,可以从池中获取连接,使用完毕...
在本实例中,我们关注的是如何配置Tomcat服务器以使用数据库连接池,并理解相关概念和技术。 首先,Tomcat的`server.xml`文件是配置服务器核心参数的地方,包括设置连接器(Connector)以处理HTTP请求。`...
JavaWeb开发中,涉及到多个关键概念,包括标签库、函数库、数据库连接池以及与Tomcat服务器相关的配置。这些知识点是构建高效、稳定的Web应用程序的基础。 1. **标签库**: 标签库(Tag Library)是JavaServer ...