jdbc一些工具类util.一
2016-04-17 15:42
204 查看
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)
相关文章推荐
- 《day14---多线程入门_进阶》
- 【leetcode】121. Best Time to Buy and Sell Stock
- 揭秘在ListView等AdapterView上动态添加删除项的陷阱
- NJUST 1925 sequence
- PHP常见注入方式
- DNS原理及其解析过程【精彩剖析】
- Hadoop学习笔记(5)-搭建Hadoop分布式
- 第12章--Java集合之Map接口
- 延时NSTimer
- 初试Visual Studio Code配置Python开发环境
- 详解struct、class中成员变量的字节对齐
- 什么是软件需求?什么是功能需求?
- Android 在其他线程中更新UI线程的解决方法
- A 偷吃糖果 南京理工大学第八届程序设计大赛(校外镜像)
- 第七周学习进度
- 查看进程数
- swift2.0 异步post请求
- 堆优化 Dijstra单源最短路径算法 2(邻接表)
- ffmpeg应用基础-2
- 第八周项目一(3) 数组作数据成员(多文件)