• 封装JDBC工具类


           JDBC连接数据库基本的步骤是固定的,这样就可以考虑封装一个工具类来简化数据库操作。

             封装时用到了Java中的properties配置文件,是以一种键值对的形式存在的,可以把连接数据库要动态的信息保存到里面,这样比较直观,不容易出错,而且容易维护。

             把配置文件放到src下就可以,如果要放到包下面就配置文件的相对路径就必须从包名开始。

             Demo :

             db.properties

             

    mysqlDriver=com.mysql.jdbc.Driver
    mysqlURL=jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8
    mysqlUser=root
    mysqlPwd=1234
    oracleDriver=oracle.jdbc.driver.OracleDriver
    oracleURL=jdbc:oracle:thin:@localhost:1521:orcl
    oracleUser=scott
    oraclePwd=tiger
    

             JDBCUtil.java

    package com.wxisme.jdbcutil;
    
    import java.io.Closeable;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    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;
    
    /**
     * JDBC数据库操作工具类  简化数据库操作
     * @author wxisme
     *
     */
    public class JDBCUtil {
    	//资源文件
    	static Properties pros = null;
    	//静态初始化  当加载JDBCUtil类时调用
    	static {   
    		pros = new Properties();
    		try {
    			//加载资源文件
    			InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
    			if(in == null) {
    				throw new FileNotFoundException("配置文件未找到");
    			}
    			pros.load(in);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	/**
    	 * 获取数据库连接
    	 * @return Connection
    	 */
    	public static Connection getMySQLConnection() {
    		Connection conn = null;
    		try {
    			//加载数据库驱动
    			Class.forName(pros.getProperty("mysqlDriver"));
    			//获取数据库连接
    			conn = DriverManager.getConnection(pros.getProperty("mysqlURL"),
    					pros.getProperty("mysqlUser"),pros.getProperty("mysqlPwd"));
    			
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}
    	
    	public static Connection getOracleConn(){
    		try {
    			Class.forName(pros.getProperty("oracleDriver"));
    			return DriverManager.getConnection(pros.getProperty("oracleURL"),
    					pros.getProperty("oracleUser"),pros.getProperty("oraclePwd"));
    		} catch (Exception e) {
    			e.printStackTrace();
    			return null;
    		}
    	}
    	/**
    	 * 关闭io资源
    	 * @param io
    	 */
    	public static void closeFile(Closeable ... io) {
    		for(Closeable temp : io) {
    			if(temp != null) {
    				try {
    					temp.close();
    				} catch (IOException e) {
    					System.out.println("文件关闭失败");
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    	
    	//关闭JDBC资源  注意顺序
    	public static void close(ResultSet rs,Statement ps,Connection conn) {
    		try {
    			if(rs!=null){
    				rs.close();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		try {
    			if(ps!=null){
    				ps.close();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		try {
    			if(conn!=null){
    				conn.close();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public static void close(Statement ps,Connection conn){
    		try {
    			if(ps!=null){
    				ps.close();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		try {
    			if(conn!=null){
    				conn.close();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public static void close(Connection conn){
    		try {
    			if(conn!=null){
    				conn.close();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    	
    
    }
    

       UtilTest.java

    package com.wxisme.jdbcutil;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    
    public class UtilTest {
    
    	public static void main(String[] args) {
    		Connection conn = JDBCUtil.getMySQLConnection();
    		PreparedStatement ps = null;
    		ResultSet rs = null;
    		String sql = "select * from student where id = ?";
    		try {
    			ps = conn.prepareStatement(sql);
    			ps.setInt(1, 1);
    			rs = ps.executeQuery();
    			
    			while(rs.next()) {
    				System.out.println(rs.getString("name"));
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

     还可以进一步封装成线程安全的工具类。

  • 相关阅读:
    JS实例
    第一章 机器学习基础
    事件与信号
    微信公众号开发实例
    php学记笔记之函数用途
    php漏洞修复 禁用函数
    删除MYSQL账号多于的空用户
    MySql 建表、添加字段、修改字段、添加索引SQL语句写法
    php对二维数据进行排序
    iis支持IPA和APK文件下载
  • 原文地址:https://www.cnblogs.com/wxisme/p/4506518.html
Copyright © 2020-2023  润新知