JDBC 连接数据库,包含连接池
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 连接数据库,包含连接池的更多相关文章
- eclipse下jdbc数据源与连接池的配置及功能简介
今天在做四则运算网页版的时候遇到了一个困惑,由于需要把每个产生的式子存进 数据库,所以就需要很多次重复的加载驱动,建立连接等操作,这样一方面写程序不方便,加大了程序量,另一方面,还有导致数据库的性能急 ...
- jdbc基础 (五) 连接池与数据源 DBCP以及C3P0的使用
一.连接池的概念和使用 在实际应用开发中,特别是在WEB应用系统中,如果JSP.Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接.打开数据库.存取数 ...
- jdbc事务处理和连接池
JDBC: * JDBC概念:Java DataBase Connectivity(Java数据库连接) SUN公司提供的一组连接数据库API. * JDBC开发步骤: * 1.注册驱动. * 2.获 ...
- jdbc事务、连接池概念、c3p0、Driud、JDBC Template、DBUtils
JDBC 事务控制 什么是事务:一个包含多个步骤或者业务操作.如果这个业务或者多个步骤被事务管理,则这多个步骤要么同时成功,要么回滚(多个步骤同时执行失败),这多个步骤是一个整体,不可分割的. 操作: ...
- JDBC第一天连接池案例
JDBC,JDBC的工具类JDBC 连接从连接池中拿: 创建连接池的语句: package day01; import java.sql.Connection; import java.sql.Dri ...
- JDBC创建mysql连接池代码
1.底层实现类(DBConnection) package JDBC.JDBCPool.MyJDBCPool; import java.sql.Connection; import java.sql. ...
- 【JDBC】C3P0连接池的使用
C3P0连接池的c3p0-config.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <c3p ...
- AOP 事物连接,记忆连接数据库,连接池
<?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www ...
- Spring整合JDBC和Druid连接池
我的博客名为黑客之谜,喜欢我的,或者喜欢未来的大神,点一波关注吧!顺便说一下,双十二快到了,祝大家双十二快乐,尽情的买买买~ 如果转载我的文章请标明出处和著名,谢谢配合. 我的博客地址为: https ...
随机推荐
- Adb 获取手机信息
adb shell getprop [ro.product.board]: [herring][ro.product.brand]: [google][ro.product.cpu.abi2]: [a ...
- cakephp文件结构
一个项目的开发会用到cakephp的那些文件呢? 如果你的项目使用cake1.3.6,那么可以参考下面的内容 根据我的经验,会涉及一下文件夹: config controllers models ...
- JSP判断闰年
闰年条件: 能被4整除但不能被100整除 能被400整除 <%@ page language="java" import="java.util.*" co ...
- Java实现快速批量移动文件
文件移动是计算机资源管理常用的一个操作,这在操作系统中可以通过文件的剪切与复制或鼠标拖动来实现.但是在Java文件的编程实现中,大多是通过复制文件到目的地,再删除所有文件来实现的.这对于小文件来说看不 ...
- OpenGl 知识一
写在前面 啦啦啦,搞了很久的Unity Shaders,越学越觉得基础知识很重要.学Unity Shader的时候,总会想,shader到底是什么呢?shader的pipeline是什么呢?它们是怎么 ...
- java.lang.IllegalArgumentException: No converter found for return value of type
原文地址: http://blog.csdn.net/linhaiguo/article/details/51554766 问题原因: 请求返回的数据无法转换,需要添加如下配置 解决方法: 1.在po ...
- javascript的初步认识
把握自己,就是时时拥有一颗清澈的心,拥有一片明朗的情怀.嘿嘿,我们在2014-2015的跨度里,我们休息了的四天,今天又回到了学习的阶段,敲起来键盘突然有点陌生,想一想时间真的好快,在这里我们已经是跨 ...
- 《Lua程序设计》第7章 迭代器与泛型for 学习笔记
本章将介绍如何编写适用于泛型for的迭代其(Iterator).7.1 迭代器与closurehttp://www.cnblogs.com/moonlightpoet/p/5685275.html 7 ...
- Java中遍历字符串toCharArray()和charAt()效率比较
public static void test() { String s = "a"; for(int i = 0; i < 100000; i++) { s += &quo ...
- MD5加密与base64编码
转自:http://blog.csdn.net/sxzlc/article/details/74127268 import java.io.UnsupportedEncodingException; ...