1.不使用连接池方式(Jdbc)

1.1 工具类(JdbcUtil.java)

package com.jdbc.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JdbcUtil {
    
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    static {
        try {
            Properties props = new Properties();
            InputStream is = JdbcUtil.class.getResourceAsStream("/jdbc.properties");
            props.load(is);
            driver = props.getProperty("driver");
            url = props.getProperty("url");
            username = props.getProperty("username");
            password = props.getProperty("password");
            is.close();
        } catch (IOException e) {
            throw new ExceptionInInitializerError("获取数据库配置文件信息失败");
        }
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            throw new ExceptionInInitializerError("加载驱动失败");
        }
    }
    public static Connection getConnection(){
        try {
            Connection conn = DriverManager.getConnection(url,username,password);
            return conn;
        } catch (Exception e) {
            throw new ExceptionInInitializerError("连接数据库的url或用户名密码错误");
        }
    }
    public static void release(ResultSet rs,PreparedStatement ps,Connection conn){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }
        if(ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            ps = null;
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }
    public static void main(String[] args) {
        // 以增加数据作为测试
        Connection conn = null;
        PreparedStatement ps = null;
        int result = 0;
        try {
            conn = JdbcUtil.getConnection();
            String sql = "insert into student(StudentNo,StudentName) values(1028,'袁华')";
            ps = conn.prepareStatement(sql);
            result = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            JdbcUtil.release(null, ps, conn);
        }
        if(result>0){
            System.out.println("插入成功");
        }else{
            System.out.println("插入失败");
        }
    
    }
}

1.2 配置文件(jdbc.properties)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/myschool
username=root
password=123456

2.Dbcp

2.1 工具类(DbcpUtil.java)

package com.jdbc.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSourceFactory;
/*
 * DBCP数据源的使用
 */
public class DbcpUtil {
    static DataSource ds = null;
    static {
            // try     shift+alt+z
            try {
                Properties props = new Properties();
                InputStream is = DbcpUtil.class.getResourceAsStream("/dbcp.properties");
                props.load(is);
                // DBCP数据源
                ds = BasicDataSourceFactory.createDataSource(props);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        
    }
    public static Connection getConnection(){
        try {
            return ds.getConnection();

} catch (SQLException e) {
            throw new RuntimeException();
        }
    }
    public static void release(Connection conn){
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) throws SQLException {
        // 测试
        Connection conn = getConnection();
        String sql = "insert into student(StudentNo,StudentName,GradeId,Email) values('1209','Jingjing',3,'jingjing@163.com')";
        PreparedStatement ps = conn.prepareStatement(sql);
        int result = ps.executeUpdate();
        if(result>0){
            System.out.println("插入成功");
        }
    }
}

1.2 配置文件(dbcp.properties)

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/myschool
username=root
password=123456
initialSize=10
maxIdle=30
minIdle=3

3.C3p0

3.1 工具类(C3p0Util.java)

package com.jdbc.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;
/*
 * C3p0数据源的使用
 */
public class C3p0Util {
    static ComboPooledDataSource ds = null;
    static {
        ds = new ComboPooledDataSource("jdbc-c3p0");
    }
    public static Connection getConnection(){
        try {
            return ds.getConnection();

} catch (SQLException e) {
            throw new RuntimeException();
        }
    }
    public static void release(ResultSet rs,PreparedStatement ps,Connection conn){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }
        if(ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            ps = null;
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }
    public static void main(String[] args) throws SQLException {
        // 测试
        Connection conn = getConnection();
        String sql = "insert into student(StudentNo,StudentName,GradeId,Email) values('1027','fdafd',3,'fdfdaf@163.com')";
        PreparedStatement ps = conn.prepareStatement(sql);
        int result = ps.executeUpdate();
        if(result>0){
            System.out.println("插入成功");
        }
    }
}

3.2 配置文件(c3p0-config.properties)

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>  
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/myschool</property>  
        <property name="user">root</property>  
        <property name="password">123456</property> 
        <property name="initialPoolSize">10</property>  
        <property name="maxPoolSize">20</property>  
        <property name="minPoolSize">5</property>
    </default-config>
    
    <named-config name="jdbc-c3p0">
        <property name="driverClass">com.mysql.jdbc.Driver</property>  
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/myschool</property>  
        <property name="user">root</property>  
        <property name="password">123456</property> 
        <property name="initialPoolSize">10</property>  
        <property name="maxPoolSize">20</property>  
        <property name="minPoolSize">5</property>
    </named-config>
</c3p0-config>

4.Jndi(依赖于服务器)

4.1 工具类(JndiUtil.java)package com.jdbc.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;
/*
 * jdbc数据源连接
 */
public class JndiUtil {
    static DataSource ds= null;

static {
        try {
            Context initCtx = new InitialContext();
            Context envCtx  = (Context)initCtx.lookup("java:comp/env");
            ds = (DataSource)envCtx .lookup("mysql/jdbc");    
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection(){
        try {
            return ds.getConnection();

} catch (SQLException e) {
            throw new RuntimeException();
        }
    }
    public static void release(ResultSet rs,PreparedStatement ps,Connection conn){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }
        if(ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            ps = null;
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }
    
    //要用到tomcat故放在jsp页面进行测试,开启tomcat,访问localhost:8080/jdbc/jndi.jsp进行测试
//    public static void main(String[] args) throws SQLException {
        //测试
//        Connection conn = JndiUtil.getConnection();
//        String sql = "insert into student(StudentNo,StudentName,GradeId,Email) values('1028','jndi',3,'jndif@163.com')";
//        PreparedStatement ps = conn.prepareStatement(sql);
//        int result = ps.executeUpdate();
//        if(result>0){
//            System.out.println("插入成功");
//        }
//    }
}

4.2 配置文件(context.xml)

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource name="mysql/jdbc" 
            auth="Container"
            type="javax.sql.DataSource"
            username="root"
            password="123456"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/myschool"
            maxActive="8"
            maxIdle="4"/>
</Context>

4.3 jndi.jsp(当然也可用servlet)

<%@page import="java.sql.PreparedStatement"%>
<%@page import="com.jdbc.util.JndiUtil"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>这个页面为测试JNDI连接池的</title>

</head>
  
  <body>
    <%
    // 这个页面为测试JNDI连接池的
    Connection conn = JndiUtil.getConnection();
    String sql = "insert into student(StudentNo,StudentName,GradeId,Email) values('1032','哈哈',4,'hehef@163.com')";
    PreparedStatement ps = conn.prepareStatement(sql);
    int result = ps.executeUpdate();
    if(result>0){
        out.println("插入成功");
    }else {
        out.println("插入失败");
    }
    JndiUtil.release(null, ps, conn);
    %>
  </body>
</html>

转载于:https://www.cnblogs.com/JAYIT/p/9301083.html

JDBC 连接数据库,包含连接池相关推荐

  1. 【JDBC知识总结】---JDBC连接数据库、连接池、JDBC在框架中的使用等

    一.JDBC的基本操作 1.1 JDBC的概述 什么是JDBC JDBC(Java Date Base Connectivity , Java数据库连接) 是一种用于执行SQL语句的Java API, ...

  2. JAVA+JDBC超级详解---从连接数据库到连接池

    一.Connection:连接数据库 1.1Driver实现类对象 Driver 接口 Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口.这个接口是提供给数据库厂商使用的, ...

  3. 数据库驱动和JDBC、DBCP-C3P0连接池

    目录 数据库驱动 第一个JDBC程序 statement对象详解 SQL注入问题 PreparedStatement对象 JDBC操作事务 DBCP-C3P0连接池 DBCP C3P0 C3P0与DB ...

  4. 2021-3-28 JDBC入门包含数据库连接池

    里面的数据库连接池所需要的jar包可以在这里面下载: https://blog.csdn.net/m0_49647974/article/details/115287069 文章目录 一.概念:Jav ...

  5. JDBC:使用连接池管理连接

    2019独角兽企业重金招聘Python工程师标准>>> 一.数据库连接池 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显 ...

  6. JDBC——通过德鲁伊连接池连接Mysql

    步骤一:在java项目中导入jar包 德鲁伊连接池jar包https://download.csdn.net/download/m0_62642719/85360784步骤二:在src下创建配置文件: ...

  7. 数据层优化-jdbc连接池简述、druid简介

    终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化 ...

  8. java连接池域名切换_java - 使用JDBC的连接池选项:DBCP与C3P0

    java - 使用JDBC的连接池选项:DBCP与C3P0 什么是可用于Java / JDBC的最佳连接池库? 我正在考虑2个主要候选人(免费/开源): Apache DBCP - [http://c ...

  9. JDBC 连接池参数

    JDBC连接池参数: jdbc.initialSize=0 //初始化连接 jdbc.maxActive=30 //连接池的最大数据库连接数,设为0表示无限制 jdbc.maxIdle=20 //没有 ...

  10. 数据库连接池——DBCP连接池o

    DBCP 1.什么是DBCP? DBCP是Apache提供的一款开源免费的数据库连接池! Hibernate3.0之后不再对DBCP提供支持!因为Hibernate声明DBCP有致命的缺欠!DBCP因 ...

最新文章

  1. php移动代码,复制移动文件 - PHP
  2. wordpress评论插件:多说
  3. linux下的代码比较工具下载,linux下的代码工具比较
  4. 【机器学习算法-python实现】svm支持向量机(3)—核函数
  5. 小波的秘密10_图像处理应用:图像增强
  6. 静态注册BroadcastReceiver内部类
  7. [SHOI2011]双倍回文 manacher
  8. mysql 半同步_mysql 主从同步 与 半同步
  9. webservie报文格式
  10. TSqlConnection
  11. Python之面向对象的程序设计
  12. SQL Server 2005的Resource数据库
  13. java专题作业答案_java作业答案java作业答案.doc
  14. 如何做好aso优化,如何做好ASO关键词优化
  15. 天地图经纬度精确拾取的方法
  16. Day-26 多线程和多进程
  17. 键盘哪个键是锁定计算机,笔记本键盘锁定键在哪_笔记本电脑的“键盘锁”是哪一个键-win7之家...
  18. Python Crash Course读书笔记 - 第19章:USER ACCOUNTS
  19. Android 11 PackageManagerService源码分析(一):PMS启动的总体流程
  20. 百位数,十位数,个位数的求法

热门文章

  1. surface 3安装android x86,Android-x86 9.0-r2稳定版发布 修复Microsoft Surface 3音频问题
  2. 汇编学习--7.13--标志寄存器
  3. 粉碎文件软件测试大乐,软件测试基础(面试)(27页)-原创力文档
  4. 米线店结账程序 装饰着模式_真实数据:外卖销售9999+ 长沙米线万单店 它究竟是怎么做到的?...
  5. VScode找不到C++万能头文件<bits/stdc++.h>解决办法
  6. 为什么java IO类不用基于继承的设计方案?
  7. Visual Studio2013修改IDE集成开发环境视图风格
  8. Lintcode 730 所有子集的和
  9. 关于x210开发板和主机、虚拟机ping通问题
  10. XP建立隐藏的超级用户