爱程序网

数据库链接

来源: 阅读:

数据库链接

简介:

 

目录:

  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@14c92a7com.mysql.jdbc.JDBC4Connection@cdf450com.mysql.jdbc.JDBC4Connection@9c6c30com.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@89848dcom.mysql.jdbc.JDBC4Connection@89848dcom.mysql.jdbc.JDBC4Connection@89848dcom.mysql.jdbc.JDBC4Connection@89848d
View Code

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

相关文章列表:
关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助