【操作数据库的模板方法】

关于用操作数据库模板方法如下代码:
    [java]
    jdbc.properties
    url=jdbc:mysql://localhost:3306/cfms
    user=root
    password=123456
    driverClass=com.mysql.jdbc.Driver
    package cn.edu.hactcm.base.utils;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    /**
    [java] view plaincopyprint?
    * CFMS    :Computer files management system
    * version :1.0 2013-2-19 上午08:44:27
    *
    * 操作JDBC的工具类
    */
    public class JdbcUtils {
    private JdbcUtils() {
    }
    private static String url;
    private static String user;
    private static String password;
    /*
    * 静态代码块
    */
    static {
    try {
    // 读取配置文件,通过类加载器的方式读取属性文件
    InputStream in = JdbcUtils.class.getClassLoader()
    .getResourceAsStream("jdbc.properties");
    Properties prop = new Properties();
    prop.load(in);
    url = prop.getProperty("url");
    user = prop.getProperty("user");
    password = prop.getProperty("password");
    // 注册驱动
    String driverClass = prop.getProperty("driverClass");
    Class.forName(driverClass);
    in.close();
    in = null;
    } catch (Exception e) {
    throw new ExceptionInInitializerError(e);
    }
    }
    /**
    * @return 获取与指定数据库的连接
    * @throws SQLException
    */
    public static Connection getConnection() throws SQLException {
    // url,user,password可以直接使用是因为上面定义成静态的了。
    Connection connection = DriverManager
    .getConnection(url, user, password);
    return connection;
    }
    /**
    * @param rs  :结果集
    * @param stmt:在程序中将使用PrepareStatement,其中Statement是其父类
    * @param conn:数据库连接
    */
    public static void release(ResultSet rs, Statement stmt, Connection conn) {
    // 判断结果集是否为空,如果不为空,关闭清空
    if (rs != null) {
    try {
    rs.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    rs = null;
    }
    // 判断声明是否为空,如果不为空,关闭清空
    if (stmt != null) {
    try {
    stmt.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    stmt = null;
    }
    // 判断连接是否为空,如果不为空,关闭清空
    if (conn != null) {
    try {
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    conn = null;
    }
    }
    }
    package cn.edu.hactcm.base.dao;
    import java.sql.ResultSet;
    /**
    * CFMS    :Computer files management system
    * version :1.0 2013-2-19 上午10:02:31
    */
    public interface ResultSetHandler {
    //处理结果集的方法
    public Object handle(ResultSet rs);
    }
    /**
    *
    */
    package cn.edu.hactcm.base.dao.impl;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import cn.edu.hactcm.base.dao.ResultSetHandler;
    /**
    * CFMS :Computer files management system
    * version :1.0 2013-2-19 上午10:38:37
    *
    * 取出第一行的所有记录存入一个Object数组
    */
    @SuppressWarnings( { "unchecked", "unused" })
    public class ArrayHandler implements ResultSetHandler {
    private Class clazz;
    public ArrayHandler(Class clazz) {
    this.clazz = clazz;
    }
    public Object handle(ResultSet rs) {
    try {
    if (rs.next()) {
    // 指向了第一行的记录
    // 获得元数据
    ResultSetMetaData metaData = rs.getMetaData();
    // 获得用于查询的sql中的字段列数
    int count = metaData.getColumnCount();
    // 创建数组

更多精彩教程请关注: 大白菜官网u盘装系统

posted on 2013-08-17 14:35  挖掘者者者  阅读(282)  评论(0编辑  收藏  举报