方式一:可视化工具连接
操作步骤:
(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();
}
}
}