该工具类的作用仅供java注册驱动、获取连接和释放资源:
第一种方式:创建静态代码块
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- public final class JdbcUtils {//拒绝继承
- private static String url = "jdbc:sqlserver://localhost:1433;DatabaseName=mytest";
- private static String user = "sa";
- private static String password = "123456";
- //拒绝new一个实例
- private JdbcUtils() {};
- static {//调用该类时既注册驱动
- try {
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- } catch (ClassNotFoundException e) {
- throw new ExceptionInInitializerError(e);
- }
- }
- //获取连接
- public static Connection getConnection() throws SQLException {
- return DriverManager.getConnection(url, user, password);
- }
- //释放资源
- public static void free(ResultSet rs, Statement stmt, Connection conn) {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (stmt != null) {
- try {
- stmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (conn != null) {
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- }
- }
- }
第二种方式:单例模式:初始化域
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- public final class JdbcUtilsSingleton {//拒绝继承
- private String url = "jdbc:sqlserver://localhost:1433;DatabaseName=mytest";
- private String user = "sa";
- private String password = "123456";
- //拒绝new一个实例
- private JdbcUtilsSingleton() {};
- static {//调用该类时既注册驱动
- try {
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- } catch (ClassNotFoundException e) {
- throw new ExceptionInInitializerError(e);
- }
- }
- //单例模式:初始化一个域
- private static JdbcUtilsSingleton instance = new JdbcUtilsSingleton();
- //获取实例
- public static JdbcUtilsSingleton getInstance() {
- return instance;
- }
- //获取连接
- public Connection getConnection() throws SQLException {
- return DriverManager.getConnection(url, user, password);
- }
- //释放资源
- public void free(ResultSet rs, Statement stmt, Connection conn) {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (stmt != null) {
- try {
- stmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (conn != null) {
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- }
- }
- }
第三种方式:单例模式:延迟加载
- package cn.itcast.jdbc.utils;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- public final class JdbcUtilsSingleton {//拒绝继承
- private String url = "jdbc:sqlserver://localhost:1433;DatabaseName=mytest";
- private String user = "sa";
- private String password = "123456";
- //拒绝new一个实例
- private JdbcUtilsSingleton() {};
- static {//调用该类时既注册驱动
- try {
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- } catch (ClassNotFoundException e) {
- throw new ExceptionInInitializerError(e);
- }
- }
- //单例模式::延迟加载
- private static JdbcUtilsSingleton instance = null;
- //获取实例
- public static JdbcUtilsSingleton getInstance() {
- if(instance == null) {
- synchronized (JdbcUtilsSingleton.class) {
- if(instance == null) {//双重检查,避免重复创建实例
- instance = new JdbcUtilsSingleton();
- }
- }
- }
- return instance;
- }
- //获取连接
- public Connection getConnection() throws SQLException {
- return DriverManager.getConnection(url, user, password);
- }
- //释放资源
- public void free(ResultSet rs, Statement stmt, Connection conn) {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (stmt != null) {
- try {
- stmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (conn != null) {
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- }
- }
- }