为何要自定义数据库链接的工具类: java
在开发中,咱们在对数据库进行操做时,必需要先获取数据库的链接,在上一篇随笔中提到的获取数据库链接的步骤为:mysql
一、定义好4个参数并赋值sql
二、加载驱动类数据库
三、获取数据库链接工具
具体代码以下:url
1 String username="root"; //链接数据库的用户名 2 String password="root"; //链接数据库的密码 3 //链接MySql数据库的url,不一样数据库url不一样,语法:jdbc:子协议:厂商内容 4 String url="jdbc:mysql://localhost:3306/MyBookStore"; 5 //数据库驱动程序的全类名,加载相应数据库的jar包,在Web App Libraries中找到driver.class复制其全类名便可 6 String driver="com.mysql.jdbc.Driver"; 7 //2.加载驱动类 8 Class.forName(driver); 9 //3.获取数据库链接,对数据库的一切操做都是从Connection链接开始的 10 Connection connection=DriverManager.getConnection(url, username, password);
若是咱们每次操做数据库,都要先编写这些代码来获取数据库链接,未免太麻烦,为了实现代码的重用性,加快开发进度,咱们将获取数据库链接的方法封装成一个工具类,只须要经过该类调用相应的方法就能够获取数据的链接。spa
具体步骤以下:code
一、新建类,咱们一般定义类名为JDBCUtils对象
二、加载驱动类 blog
因为驱动程序不常常改变,且没有屡次加载数据库驱动的必要,将加载驱动程序的代码放在静态代码块中,
静态代码块只在类加载的时候加载一次,且在构造方法前被加载
三、定义静态Connection类对象
将Connection类的对象定义为Static,因为conn被静态方法getConnection调用,必须修饰为static
四、定义静态方法GetConnection,用于获取数据库链接
五、定义closeStatement方法,用于关闭结果集,statement和connection链接
具体代码以下:
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.sql.Statement; 6
7 public class JDBCUtils { 8 //因为驱动程序不常常改变,且没有屡次加载数据库驱动的必要, 9 //将驱动程序放在静态代码块中,只在类加载的时候加载一次,且在构造方法前被加载
10 private static String driver="com.mysql.jdbc.Driver"; 11 static{ 12 try { 13 Class.forName(driver); 14 } catch (ClassNotFoundException e) { 15 e.printStackTrace(); 16 } 17 } 18 private static Connection conn=null; 19
20 //获取数据库链接的方法
21 public static Connection getConnection(String url,String user,String password) throws Exception{ 22 conn=DriverManager.getConnection(url, user, password); 23 return conn; 24 } 25
26 //关闭资源的方法
27 public static void closeStament(ResultSet rs,Statement st,Connection conn){ 28 if(rs!=null){ 29 try { 30 rs.close(); 31 } catch (SQLException e) { 32 e.printStackTrace(); 33 } 34 } 35 if(st!=null){ 36 try { 37 st.close(); 38 } catch (SQLException e) { 39 e.printStackTrace(); 40 } 41 } 42 if(conn!=null){ 43 try { 44 conn.close(); 45 } catch (SQLException e) { 46 e.printStackTrace(); 47 } 48 } 49 } 50 }