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类的是一个单例模式。该模式的一个优点是:利于控制实例数目,节省系统资源。
新闻热点
疑难解答