前提准备
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封装成为一工具类 JDBCUtilspublic 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);}}}
