您的位置:首页 > 其它

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)

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: