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方法:
<pre name="code" class="java"><span style="white-space:pre">	</span>/**
	 * 重载方法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语句返回<span style="font-family: Arial, Helvetica, sans-serif;">结果集</span><span style="font-family: Arial, Helvetica, sans-serif;">时使用此重载方法</span>
	 * @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)


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值