您的位置:首页 > 编程语言

传智播客JDBC_规范和封装jdbc程序代码学习笔记

2009-03-15 00:52 603 查看
package three.jdbc.base;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import three.jdbc.utils.Utils;

// import 的是接口(sql.XXX)
// 不是具体的实现接口类(mysSql.XXX)
// 接口可以引用实现类的对象 从而
// 降低耦合度

public class Base {

public static void main(String[] args) throws SQLException {
template();
}

static void template() throws SQLException{

Statement statement = null;
ResultSet rs = null;
// 1 创建连接
Connection connection = Utils.getConnection();
try {

// 2 创建语句 (小插曲因为:创建 所以是createStatement不是getStatement )
statement = connection.createStatement();
// 4 执行语句
rs = statement.executeQuery("select *from user");
// 5 处理结果
while (rs.next()) {
System.out.println(rs.getObject(1)
+ "/t" + rs.getObject(2)
+ "/t" + rs.getObject(3)
+ "/t" + rs.getObject(4)
+ "/t");
}
} finally {
// 释放资源 finally
Utils.free(connection, statement, rs);
}
}

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

package three.jdbc.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

// 工具类 特点
// 1 不希望被继承 --> final
// 2 不希望被构造 --> private 的 构造函数
// 3 提供的方法多静态的 --> static

public final class Utils {

private static String url = "jdbc:mysql://localhost:3306/jdbc";
private static String user = "root";
private static String password = "root";

private Utils(){

}

// 在不实例的前提下 调用其方法
// 1 单例模式
// 2 public 静态方法
static {

// 保证注册一次-> 1静态代码块类被加载到虚拟机时被执行
try {
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
public static void free(Connection connection,
Statement statement,
ResultSet rs) {

// 再使用 对象实例时 养成判断nul的习惯
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (statement != null) {
statement.close();
}
} catch (SQLException e) {

e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////

工具类 将业务逻辑代码和为了实现业务逻辑的技术实现代码分离

再这个例子中 执行sql 句 和 处理结果(打印结果到控制台上)

算做是 业务逻辑。想注册驱动,释放连接, 这种有共性 而切

和业务逻辑松耦合的代码就是工具类了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: