jdbc一些工具类util.一

jdbc的一些工具类的使用-第一篇

----建立连接和关闭

jdbc在使用过程中有大量的重复代码,写起来很费劲,那么我们怎么可以更省力气呢,我们可以把一些代码封装起来,做一个工具类,也可以使用别人已经封装好的工具类比如DbUtils, 下面我将简单的讲一讲(复杂的我也不会).
写一个连接数据库的jdbc程序,分为以下几步:
1. java与数据库建立连接, 
2. java发送sql语句给数据库, 
3. 数据库返回结果
4.关闭连接
其中第一步和第四步在所有jdbc代码中都大同小异,所以我们可以将这两个步骤的代码封装起来, 做成一个工具类.供以后使用.
首先, 建立一个class, 名字叫做JdbcUtil好了. 我们在建立连接的时候需要获取连接对象, 有几种方法,我不在这里一一说明.由于在加载数据库驱动器类的时候就已经注册驱动了,所以我们直接用反射加载一下驱动器类:
我用的mysql:Class.forName("mysql.jdbc.Driver");这代码可以放在静态块中,这样可以在使用工具类时最先加载
然后,里面写上建立连接的方法和关闭连接的方法:所有代码如下:
public class JdbcUtil {
	private static String driverClass = null;
	private static String url = null;
	private static String user = null;
	private static String password = null;
	
	static {
		// 类路径获取配置文件: 即可在java使用也可在web项目中使用
		InputStream in = JdbcUtil.class.getResourceAsStream("/properties/db.properties");
		// 获取配置文件内容
		Properties properties = new Properties();
		try {
			properties.load(in);
			// 获取驱动器类
			driverClass = properties.getProperty("driverClass");
			// 获取url
			url = properties.getProperty("url");
			// 获取用户名,密码
			user = properties.getProperty("user");
			password = properties.getProperty("password");
			/**
			 *  注册驱动器
			 *  会在驱动器类静态块中自动用
			 *  java.sql.DriverManager.registerDriver(new Driver())
			 *  注册,
			 *  所以不用创建对象,也不用重复注册
			 */
			Class.forName(driverClass);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 获取连接
	 * @return
	 */
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
        /**
	 * 关闭连接
	 */
	public static void close(Connection conn) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			conn = null;
		}
	}
}
其中,关闭连接的步骤一般还要关闭Statement或者PreparedStatement,所以我们再重载两个close方法:
	/**
	 * 重载方法1, 
	 * 可关闭:
	 * 		Statement
	 * 		PerparedStatement
	 * 		CallableStatment
	 * @param conn
	 * @param stmt
	 */
	public static void close(Connection conn, Statement stmt) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			conn = null;
		}
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			stmt = null;
		}
	}
	
	/**
	 * 使用DQL语句返回结果集时使用此重载方法
	 * @param conn
	 * @param stmt
	 * @param result
	 */
	public static void close(Connection conn, 
				Statement stmt, ResultSet result) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			conn = null;
		}
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			stmt = null;
		}
		if (result != null) {
			try {
				result.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			result = null;
		}
	}
最基本的一个jdbcutil就完成了,自此以后,打开关闭连接就可以直接使用自己写好的工具类了,
 
   
但是前面说的使用sql语句和获取结果这步骤实际上也很相似,难道没有办法简化吗.当然有,但是会在我的下一篇里面讲(本来准备一下讲完,但是饿了,我要去吃东西,bye)


你可能感兴趣的:(jdbc一些工具类util.一)