关于jdbc工具类的编写

连接一个本地db文件,向其中的user表插入数据

package jdbc;

import util.JdbcUtils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Demo {
    public static void main(String[] args) {

        Connection conn = null;
        Statement stmt = null;
        try {
            // 1.注册驱动
            Class.forName("org.sqlite.JDBC");
            // 2.获取数据库连接对象
            //D:\\FDZC\\java\\SQLiteSpy\\SQLiteSpy.db3是俺本地db文件的绝对路径
            conn = DriverManager.getConnection("jdbc:sqlite:D:\\FDZC\\EveryCode\\sundown\\database\\dbFile\\SQLiteSpy.db3");
            // 3.定义sql语句
            //sql语句根据使用的数据库有所不同,不可照搬
            String sql = "insert into user values (5,'Chrs','478') ";
            // 4.获取执行sql语句对象Statement
            stmt = conn.createStatement();
            // 5.执行sql
            int count = stmt.executeUpdate(sql);

            // 6. 处理结果
            System.out.println(count);

        }  catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


当我们需要编写多个连接数据库的文件时,会出现一些重复性极高的代码块。如
都需要注册驱动,连接数据库

 			// 1.注册驱动
            Class.forName("org.sqlite.JDBC");
            // 2.获取数据库连接对象
            conn = DriverManager.getConnection("jdbc:sqlite:D:\\FDZC\\java\\SQLiteSpy\\SQLiteSpy.db3");

都需要释放资源

if (stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

所以我们可以写一个工具类,其中包含这些重复性代码,在其他数据库文件中我们只需要调用这些代码而不需再次编写,可以提高代码的简洁度和效率
模块结构
在这里插入图片描述
工具类JdbcUtils在一个新建的util包下

package util;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

public class JdbcUtils {

    private static String  driver ;
    private static String url;

    static {

        try {
            // 1.创建Properties集合类
            Properties pro = new Properties();
            // 2.加载文件

            //获取src路径下文件的方式---ClassLoader类加载器
            ClassLoader classLoader = JdbcUtils.class.getClassLoader();
            URL res = classLoader.getResource("jdbc.properties");
            String path = res.getPath();

            pro.load(new FileReader(path));
            // 3.获取数据赋值
            url = pro.getProperty("url");
            driver = pro.getProperty("driver");
            // 4.注册驱动
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url);

    }
    public static void close(Statement s, Connection c){
        if (s != null){
            try {
                s.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (c != null){
            try {
                c.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

    public static void close(ResultSet r,Statement s, Connection c){
        if (r != null){
            try {
                r.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (s != null){
            try {
                s.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (c != null){
            try {
                c.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }
}

在src目录下建一个配置文件名为jdbc.properties。内容如下,按需添加

driver=org.sqlite.JDBC
url=jdbc:sqlite:D:\\FDZC\\EveryCode\\sundown\\database\\dbFile\\SQLiteSpy.db3

浅试一下吧

package jdbc;

import util.JdbcUtils;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class Demo {
    public static void main(String[] args) {

        Connection conn = null;
        Statement stmt = null;
        try {
           conn = JdbcUtils.getConnection();
            // 3.定义sql语句
            String sql = "insert into user values (5,'Chrs','478') ";
            // 4.获取执行sql语句对象Statement
            stmt = conn.createStatement();
            // 5.执行sql
            int count = stmt.executeUpdate(sql);

            // 6. 处理结果
            System.out.println(count);

        }  catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.close(stmt, conn);
        }

    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值