设计一个工具类,用来注册驱动 。当然因为是工具类所以它要可以直接使用也不想让别人访问。定义类为final。成员变量和方法为static,并且是private。 package com.test;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
public final class DBUtils {
private static String url = "jdbc:mysql://localhost:3306/test";
private static String name = "root";
private static String password = "root";
private DBUtils() { } //调用这个私有方法,他就会静态的执行下面的代码。 static { try { Class.forName("com.mysql.jdbc.Driver");//注册驱动 } catch (ClassNotFoundException e) { e.printStackTrace(); } }
public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, name, password);//连接数据库 }
public static void release(ResultSet rs, Statement st, Connection conn) { //因为下面的内容是最后的释放资源,而且代码很多,每次地数据库操作都要用要到,就重构一下写个方法 try { if (rs != null)//try catch保证捕捉异常。 rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally {//肯定要执行的,作用即使是上面异常也要关闭资源。
try { if (st != null) st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
利用上面的工具类来联系,jdbc。 package com.test;
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
public class Test {
/** * @param args * @throws ClassNotFoundException * @throws SQLException */ public static void main(String[] args) throws ClassNotFoundException { Connection conn = null; Statement st = null; ResultSet rs = null;//注意把变量的定义放在外面。 try { conn = DBUtils.getConnection(); st = conn.createStatement();//创建执行SQL的语句(Statement) String sql = "select * from test"; rs = st.executeQuery(sql); 1. 处理执行结果(ResultSet)
while (rs.next()) {// 开始一行一行的扫描 System.out.println("id:" + rs.getInt("id")); System.out.println("name:" + rs.getString("name")); System.out.println("date:" + rs.getDate("test_date")); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtils.release(rs, st, conn);//释放资源 } }
}