zoukankan      html  css  js  c++  java
  • JDBC 封装成工具包使用

    前言:

    JDBC编程6步:

    第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)
    第二步:获取连接( 表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道)
    第三步:获取数据库操作对象(专门执行sq1语句的对象)
    第四步:执行SQL语句(DQL DML ....)
    第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)
    第六步:释放资源( 使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)

      我们在使用JDBC连MySql的时候可以发现写重复的代码是非常痛苦的,所以我这里把它封装成一个工具类进行使用,简化代码!

    编写配置文件信息:

    注意:最好将jdbc.properties配置文件放在项目的src目录下,以便能够正常通过代码找到

    #编写配置文件信息
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/donglijiedian
    name=root
    passwd=zhixi158

    封装:

    import java.io.InputStream;
    import java.sql.*;
    import java.util.Properties;
    
    public class JUtil {
        private static String driver = null;
        private static String url = null;
        private static String name = null;
        private static String passwd = null;
    
        //1、注册驱动(只需要一次)
        static {
            try {
                //1、获取到流文件
                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties");
                //2、加载流文件
                Properties properties = new Properties();
                properties.load(is);
    
                driver = properties.getProperty("driver");
                url = properties.getProperty("url");
                name = properties.getProperty("name");
                passwd = properties.getProperty("passwd");
    
                //3、注册驱动
                Class.forName(driver);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        //4、获取连接
        public Connection getCollection() throws SQLException {
            return DriverManager.getConnection(url, name, passwd);
        }
    
        //5、关闭流
        public void close(Connection conn, Statement s, ResultSet rs) {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (s != null) {
                try {
                    s.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    测试:

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class 包装类测试文件 {
        public static void main(String[] args) {
            //1、注册驱动(会执行静态代码块)
            JUtil util = new JUtil();
    
            Connection conn = null;
            Statement st = null;
            ResultSet rs = null;
            try {
                //2、获取连接
                conn = util.getCollection();
                //3、获取数据库操作对象
                st = conn.createStatement();
                //4、执行SQL
                String sql = "select * from emp";
                rs = st.executeQuery(sql);
                //5、处理查询结果集
                while (rs.next()) {
                    String s1 = rs.getString(1);
                    String s2 = rs.getString(2);
                    String s3 = rs.getString(3);
                    String s4 = rs.getString(4);
                    String s5 = rs.getString(5);
                    String s6 = rs.getString(6);
                    String s7 = rs.getString(7);
                    String s8 = rs.getString(8);
                    System.out.println(s1 + " " + s2 + " " + s3 + " " + s4 + " " + s5 + " " + s6 + " " + s7 + " " + s8);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                //6、释放资源
                util.close(conn, st, rs);
            }
        }
    }

     可以看到正常连接数据库执行代码!

  • 相关阅读:
    设计模式小结
    Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)
    全新对待.net一次全面的旅程
    页面生命周期小结
    面向对象点滴
    Chapter 2.1:WCF服务契约的重载与继承详解
    一封给“X教授”的回信(讨论Socket通信)
    Chapter 1.4:WCF实践 元数据详解
    有了WCF,Socket是否已人老珠黄?
    Chapter 1.3:WCF实践 HelloWorld
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/14109624.html
Copyright © 2011-2022 走看看