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>

JDBC 连接数据库,包含连接池的更多相关文章

  1. eclipse下jdbc数据源与连接池的配置及功能简介

    今天在做四则运算网页版的时候遇到了一个困惑,由于需要把每个产生的式子存进 数据库,所以就需要很多次重复的加载驱动,建立连接等操作,这样一方面写程序不方便,加大了程序量,另一方面,还有导致数据库的性能急 ...

  2. jdbc基础 (五) 连接池与数据源 DBCP以及C3P0的使用

    一.连接池的概念和使用 在实际应用开发中,特别是在WEB应用系统中,如果JSP.Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接.打开数据库.存取数 ...

  3. jdbc事务处理和连接池

    JDBC: * JDBC概念:Java DataBase Connectivity(Java数据库连接) SUN公司提供的一组连接数据库API. * JDBC开发步骤: * 1.注册驱动. * 2.获 ...

  4. jdbc事务、连接池概念、c3p0、Driud、JDBC Template、DBUtils

    JDBC 事务控制 什么是事务:一个包含多个步骤或者业务操作.如果这个业务或者多个步骤被事务管理,则这多个步骤要么同时成功,要么回滚(多个步骤同时执行失败),这多个步骤是一个整体,不可分割的. 操作: ...

  5. JDBC第一天连接池案例

    JDBC,JDBC的工具类JDBC 连接从连接池中拿: 创建连接池的语句: package day01; import java.sql.Connection; import java.sql.Dri ...

  6. JDBC创建mysql连接池代码

    1.底层实现类(DBConnection) package JDBC.JDBCPool.MyJDBCPool; import java.sql.Connection; import java.sql. ...

  7. 【JDBC】C3P0连接池的使用

    C3P0连接池的c3p0-config.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <c3p ...

  8. AOP 事物连接,记忆连接数据库,连接池

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www ...

  9. Spring整合JDBC和Druid连接池

    我的博客名为黑客之谜,喜欢我的,或者喜欢未来的大神,点一波关注吧!顺便说一下,双十二快到了,祝大家双十二快乐,尽情的买买买~ 如果转载我的文章请标明出处和著名,谢谢配合. 我的博客地址为: https ...

随机推荐

  1. Faulty Odometer(九进制数)

    Faulty Odometer Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9301   Accepted: 5759 D ...

  2. IIS------如何安装IIS

    1.打开“控制面板”->“程序”->“打开或关闭Windows功能” 2.如图所示: 3.如图所示: 4.点击确定,配置完成

  3. C#------Aspose的License文件

    Aspose官网: https://docs.aspose.com/display/cellsnet/Home 下载地址: http://vdisk.weibo.com/s/uoya0tRiZNf0X ...

  4. Android ViewDragHelper全然解析 自己定义ViewGroup神器

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46858663. 本文出自:[张鸿洋的博客] 一.概述 在自己定义ViewGro ...

  5. [AX2012]关于财务默认维度

    和以前的版本一样,AX2012中很多地方都使用财务维度,比如客户.销售订单.销售订单行等,根据相应的财务维度设置,生成的相应财务分录将带有财务维度,方便后续对财务分录交易的分析.下图是在客户记录上设置 ...

  6. PHP计算两个绝对路径的相对路径

    用PHP计算两个绝对路径的相对路径,该如何求呢? 先根据分隔符切割,然后查找相同 异同点,然后开始有相同点,从相同点结束为止开始拼接剩余部分,没有的话,到达根路径拼接整体. 截图如下: 代码如下: & ...

  7. [Linux] 特殊文件 /dev/zero

    /dev/zero 是类 Unix 系统中一个特殊的文件,当读取该文件时,它会提供无限的空字符 null.它的一个主要用途是提供字符流来初始化数据存储,也就是使用空字符覆盖目标数据.另一个常见的用法是 ...

  8. 第三篇:配置Hadoop的Eclipse开发环境

    前言 在先前的文章中,已经介绍了如何在Ubuntu Kylin操作系统下搭建Hadoop运行环境,而现在将在之前工作的基础上搭建Eclipse开发环境. 配置 开发环境:Eclipse 4.2,其他同 ...

  9. iOS - AVAudioSession详解

    音频输出作为硬件资源,对于iOS系统来说是唯一的,那么要如何协调和各个App之间对这个稀缺的硬件持有关系呢? iOS给出的解决方案是"AVAudioSession" ,通过它可以实 ...

  10. WP8.1学习系列(第二十三章)——到控件的数据绑定

    在本文中 先决条件 将控件绑定到单个项目 将控件绑定到对象的集合 通过使用数据模板显示控件中的项目 添加详细信息视图 转换数据以在控件中显示 相关主题 本主题介绍了如何在使用 C++.C# 或 Vis ...