一、建立一个工具类
/*
*
* 这是一个工具类,一般工具类不能被继承,所以定义成final
*
* 不需要构造实例,用私有的构造方法
* 单例模式或者用static静态代码块,
* 本例用static,没有实例
* */
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public final class JdbcUtils {
private static String url = "jdbc:mysql://localhost:3306/jdbc";
private static String user = "root";
private static String password = "123456";
private JdbcUtils() {
}
// 注册驱动
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
//建立连接
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
//释放资源
public static void free(ResultSet rs, Statement st, Connection conn) {
try {
if (rs != null)
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();
}
}
}
}
}
二、修改原来的类
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Base {
public static void main(String[] args) {
try {
template();
} catch (Exception e) {
e.printStackTrace();
}
}
static void template() throws Exception {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
// 2.建立连接
conn = JdbcUtils.getConnection();
// 3.创建语句
st = conn.createStatement();
// 4.执行语句
rs = st.executeQuery("select * from user");
// 5.处理结果
while (rs.next()) {
System.out.println("id:" + rs.getObject(1) + "\tname:"
+ rs.getObject(2) + "\tbirthday:" + rs.getObject(3)
+ "\tmoney:" + rs.getObject(4));
}
// 6.释放资源
} finally {
JdbcUtils.free(rs,st,conn);
}
}
}
- 删去注册驱动的代码:现在注册驱动只进行一次
- getConnection()建立连接
- free()释放资源
本例是使用静态代码的方式建立的工具类,还有单例模式建立的工具类