前提准备
1.和01里面一样还是要导入druid的jar包和mysql的驱动jar包。
2.编写配置文件 druid.properties
配置文件:druid.properties
在java项目的src文件夹下创建配置文件
创建工具类(我用的就是这个工具类)
创建一个utils包下面创建JDBCUtils工具类
工具类代码
package utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
/**
* 这个类主要是提供一个数据库连接和druid的DataSource
*/
public class JDBCUtils {
private static DataSource ds ;
//使用静态代码块来加载配置文件
static {
try {
Properties properties = new Properties();
//加载配置文件
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
//得到输入流
properties.load(is);
//得到 datasource对象
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
public static DataSource getDataSource(){
return ds;
}
}
上面的工具类是我项目使用到的哦工具类,但是是不够好的,因为一般还有释放资源的方法
这里给一个比较好的Druid工具类的案例
/**
* Druid数据库连接池的工具类 实现
*
* 0在静态代码块里面获取配置文件
* 1.获取数据库连接
* 2,释放资源
* 3.获取数据库连接池对象
*
*/
public class DruidTools {
private static DataSource ds ;
//静态代码块读取配置文件
static {
try {
Properties properties= new Properties();
//加载文件
InputStream is = DruidTools.class.getClassLoader().getResourceAsStream("druid.properties");
properties.load(is);
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取数据库的连接
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/**
* 释放资源
* 在执行dml(增删改)语句的时候是 释放 statement 和 connection 对象
* 在执行dq查询语句的时候是要释放 释放 resultset ,statement 和 connection 对象
*/
public static void close(Statement stmt , Connection connection){
//简化代码,我们调用下面的方法实现释放资源
close(null ,stmt,connection);
}
public static void close(ResultSet resultSet ,Statement stmt , Connection connection){
if (resultSet != null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 获取连接池的方法
*/
public static DataSource getDataSource(){
return ds;
}
}
测试类查询数据库里面的数据
使用工具类实现数据库的查询
package dimian;
import utils.JDBCUtils;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//我们会发现在getdruidconnection1里面很多地方可能都会用到数据库的连接 和druid的datasouce
//我们可以把得到数据库的连接,和得到druid的datasouce封装成为一工具类 JDBCUtils
public class getdruidconnection2 {
public static void main(String[] args) throws SQLException {
//使用工具类来操作mysql数据库
Connection conn = JDBCUtils.getConnection();
String sql = "select * from luo ;";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
//遍历得到的集合
while (resultSet.next()){
//输出数据库name字段里面的数据
String name = resultSet.getString("name");
System.out.println(name);
}
}
}