zoukankan      html  css  js  c++  java
  • 数据库链接

    数据库链接

    简介:

     

    目录:

    1. 常规写法

    2.   用static{}代码段来初始化Connection

    常规写法

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class DBUtils {
        
      private static final String CONN_STR="jdbc:mysql://localhost:3306/zz?characterEncoding=UTF-8";
      private static final String USERNAME="root";
      private static final String PWD="123123";
        
      private static DBUtils me=new DBUtils();
        
        //为了是单例模式成为唯一可以获取该对象的方法,将该类的无参构造函数设为私有
        private DBUtils() {}
        
        public static DBUtils getInstance(){
            return me;
        }
    
        /**
         * 获取数据库连接
         * @return
         */
        public Connection getConn()
        {
            
            Connection conn=null;
            
            try {
                //查看类路径中是否存在这个驱动入口类
                Class.forName("com.mysql.jdbc.Driver");
                conn=DriverManager.getConnection(CONN_STR, USERNAME, PWD);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            
            return conn;
        }
        
        /**
         * 释放数据库资源
         * @param conn
         * @param pstmt
         * @param rs
         */
        public void ReleaseRes(Connection conn,PreparedStatement pstmt,ResultSet rs)
        {
            try{
              if(rs!=null) rs.close();
              if(pstmt!=null) pstmt.close();
              if(conn!=null)  conn.close();
            }catch(SQLException e)
            {
                e.printStackTrace();
            }
        }
    }

    测试代码:

    public class DBUtilsTest {
       public static void main(String[] args) {
        System.out.println(DBUtils.getInstance().getConn());
        System.out.println(DBUtils.getInstance().getConn());
        System.out.println(DBUtils.getInstance().getConn());
        System.out.println(DBUtils.getInstance().getConn());
      }
    }
    com.mysql.jdbc.JDBC4Connection@14c92a7
    com.mysql.jdbc.JDBC4Connection@cdf450
    com.mysql.jdbc.JDBC4Connection@9c6c30
    com.mysql.jdbc.JDBC4Connection@80f252
    View Code

          从上面的答案我们可以看出,每次都是返回不一样的Connecion实例。

          用static{}代码段来初始化Connection

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class DBUtils {
        
      private static final String CONN_STR="jdbc:mysql://localhost:3306/zz?characterEncoding=UTF-8";
      private static final String USERNAME="root";
      private static final String PWD="123123";
        
      private static Connection conn;
    static{ System.out.println("static{} 代码开始执行"); try { //查看类路径中是否存在这个驱动入口类 Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection(CONN_STR, USERNAME, PWD); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static Connection getConn() { return conn; } }

     测试代码:

    public class DBUtilsTest {
       public static void main(String[] args) {
        System.out.println(DBUtils.getConn());
        System.out.println(DBUtils.getConn());
        System.out.println(DBUtils.getConn());
        System.out.println(DBUtils.getConn());
      }
    }
    static{} 代码开始执行
    com.mysql.jdbc.JDBC4Connection@89848d
    com.mysql.jdbc.JDBC4Connection@89848d
    com.mysql.jdbc.JDBC4Connection@89848d
    com.mysql.jdbc.JDBC4Connection@89848d
    View Code

          从上面的答案我们可以看出,每次都是返回的Connection的实例都是一样的。因为static{}代码段只会在类初次加载的时候执行一次。所以static{}代码块用于获取Connection实例是不合适,但是static{}代码块读取配置文件里的参数值,用于对类的静态成员变量经行赋值操作是非常好的选择。

  • 相关阅读:
    django rest framework serializers解读
    django rest framework通用view
    scrapy爬取伯乐在线文章
    scrapy 框架入门
    django rest framework mixins小结
    python 函数进阶
    python 变量进阶(理解)
    Docker 部署Django项目
    Docker部署Vue 工程包
    saltstack 初始化LINUX系统
  • 原文地址:https://www.cnblogs.com/bmbi/p/5027434.html
Copyright © 2011-2022 走看看