JDBC连通数据库的三种方式


方式一:可视化工具连接

操作步骤:
(1)在Java项目中Window–>Show View–>Other–>输入db,确定。
在这里插入图片描述
(2)右键MyEclipse Derby,根据提示添加信息。
在这里插入图片描述
(3)双击新建的驱动,连接成功。

方式二:纯Java方式

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * 类说明:
 * 		纯Java方式连接数据库
 * @author qianliangguo
 */
public class testConnection {
	public static void main(String[] args) throws Exception {
		//1.加载驱动
		Class.forName("com.mysql.jdbc.Driver");
		//2.获取连接
		String url ="jdbc:mysql://localhost:3306/mybase";
		String user = "root";
		String password = "Hudie";
		Connection conn = DriverManager.getConnection(url, user, password);
		//打印连接
		System.out.println("数据库的连接:"+conn);
	}
}

运行后打印出了conn连接的地址:
在这里插入图片描述

方式三:封装☆

(1)dbcp.properties配置文件

driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/mybase?useUnicode\=true&characterEncoding\=utf-8
username=root
password=Hudie
initialSize=10
maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
connectionProperties=useUnicode=true;characterEncoding=utf-8
defaultAutoCommit=true
defaultTransactionIsolation=READ_COMMITTED

(2)JdbcUtil工具类

package 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.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;
/**
 * 类说明:
 * 		封装一个Jdcb工具类
 * 提供的方法:
 * 		1.Connection getConnection():用来获取连接,
 * 		2.void release(ResultSet rs,PreparedStatement pstm,Connection conn):释放资源
 * 
 * 类作用:
 * 	1:properties配置文件 封装获取连接 释放资源 提高代码复用性√
 * 	2:类加载时加载驱动√
 * 	3:ThreadLocal控制事务√
 * 	4:连接池,提高资源利用率√
 * 	5:rowmapper封装 减少代码冗余
 * 	6:template封装 减少dao层代码冗余
 * 
 * @author qianliangguo
 */

public class JdbcUtil3 {
	//创建连接池
	static DataSource pool = null;
	//创建properties对象
	static Properties pro = new Properties();
	//创建ThreadLocal:可以为同一个线程保存同一个连接,为不同线程保存不同的连接
	private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
	
	//加载配置文件到流对象后创建连接池
	static{
		InputStream is = null;
		try {
			//加载properties文件到properties对象中
			is = JdbcUtil3.class.getResourceAsStream("/conf/dbcp.properties");
			pro.load(is);
			//Class.forName(pro.getProperty("driverClassName"));
			//创建连接池
			pool = BasicDataSourceFactory.createDataSource(pro);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	//获取连接
	public static Connection getConnection() throws Exception{
		Connection conn = tl.get();//获得当前线程中的连接
		//如果当前线程中没有连接,就获取连接(使用连接池)
		if(conn == null){
			String url = pro.getProperty("url");
			String user = pro.getProperty("username");
			String password = pro.getProperty("password");
			//conn = DriverManager.getConnection(url,user,password);
			conn = pool.getConnection();
			//将连接保存到当前线程
			tl.set(conn);
		}
		return conn;
	}
	//释放资源
	public static void release(ResultSet rs,PreparedStatement pstm,Connection conn) throws Exception{
		if(rs!=null){
			rs.close();
		}
		if(pstm!=null){
			pstm.close();
		}
		if(conn!=null){
			conn.close();
			//关闭连接时将连接从当前线程中移除
			tl.remove();
		}
	}
}


发布了328 篇原创文章 · 获赞 798 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/103908081
今日推荐