手把手做一个JSP入门程序(三):DBHelper类设计--连接mysql数据库(JSP)

DBHelper类设计–连接mysql数据库

  DBHelper(DataBase Helper)主要用于帮助我们进行对数据库的操作,我们会在其中创建一个获取数据库连接的方法。我们将放在utile包内,util包作为工具包。
  为了能够对mysql数据库进行访问,我们需要一个连接mysql的jar包:mysql-connector-java-5.0.5-bin.jar。点击这里下载。下载之后放在WEB-INF的lib目录中即可。

package util;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBHelper {
//  数据库驱动
    private static final String driver = "com.mysql.jdbc.Driver";
//  连接数据库的URL地址,这里使用的是mysql的默认端口3306
    private static final String url = "jdbc:mysql://localhost:3306/simpleshop";
//  数据库登陆信息,我这里不使用root用户,一般对与一个项目,我们可以创建一个独立的具有部分权限用户出来,root用户一般都只是用于管理数据库
    private static final String username = "superboy";
    private static final String password = "iamsuperboy";

    private static Connection conn = null;

//  静态代码块负责加载驱动
//  一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的,且优先于主函数。
    static{
        try{
            Class.forName(driver);
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }

    public static Connection getConnection() throws Exception{
        if(conn == null){
            conn = DriverManager.getConnection(url,username,password);
            return conn;
        }
        return conn;
    }
}

写完之后,为了确认是否可以正常连接,我们可以写一个这样的主函数进行测试。

public static void main(String[] args) {
    try{
        //获取一个连接
        Connection conn = DBHelper.getConnection();
        if(conn!=null){
            System.out.println("数据库连接正常!");
        }else{
            System.out.println("数据库连接异常!");
        }
    }catch(Exception ex){
        ex.printStackTrace();
    }
}

关于Class.forName
  加载数据库驱动的时候我们通常会使用Class.forName进行加载。而Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段,因此,如果在类中有静态初始化器的话,JVM必然会执行该类的静态代码段。而在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己,即任何一个JDBCDriver的Driver类的代码都必须类似如下。既然在静态初始化器的中已经进行了注册,所以我们在使用JDBC时只需要Class.forName(xxx.xx.xx);就可以了。这里的xxx.xxx.xx指向一个类。

public classMyJDBCDriver implements Driver {
    static{
        DriverManager.registerDriver(new MyJDBCDriver());
    }
} 

  所以,利用静态代码块负责加载驱动,可以在程序开始执行时,加载到数据库驱动,而且只会执行一次。值得一提的是,这里的DBHelper类的是一个单例模式。该模式的一个优点是:利于控制实例数目,节省系统资源。

你可能感兴趣的:(jsp,javaEE)