首页 > 数据库技术 > 详细

JDBC一般流程及优化过程

时间:2014-12-13 02:05:57      阅读:399      评论:0      收藏:0      [点我收藏+]
import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.ResultSet;
import?java.sql.SQLException;
import?java.sql.Statement;
public?class?Base?{
?????
???/**
?????*?@param?args
?????*?@throws?Exception
?????*/
????public?static?void?main(String[]?args)?throws?Exception?{
????????template();?
?
????}
????static?void?template()?throws?SQLException,?ClassNotFoundException?{
????????//?1.注册驱动
????????//DriverManager.registerDriver(new?com.mysql.jdbc.Driver());
????????//System.setProperty("jdbc.drivers",?"com.mysql.jdbc.Driver");
????????Class.forName("com.mysql.jdbc.Driver");//?推荐方式
?
????????//?2.建立连接
????????String?url?=?"jdbc:mysql://localhost:3306/jdbc";
????????String?user?=?"root";
????????String?password?=?"123456";
????????Connection?conn?=?DriverManager.getConnection(url,?user,?password);
?
????????//?3.创建语句
????????Statement?st?=?conn.createStatement();
?
????????//?4.执行语句
????????ResultSet?rs?=?st.executeQuery("select?*?from?user");
?
????????//?5.处理结果
????????while?(rs.next())?{
????????????System.out.println(rs.getObject(1)?+?"\t"?+?rs.getObject(2)?+?"\t"
????????????????????+?rs.getObject(3)?+?"\t"?+?rs.getObject(4));
????????}
?
????????//?6.释放资源
????????rs.close();
????????st.close();
????????conn.close();
????}
}

?

由上面的代码可知:JDBC一般的处理过程分为六个步骤

  1. 注册驱动

  2. 建立连接

  3. 创建语句

  4. 执行语句

  5. 处理结果

  6. 释放资源

?

上面的代码不够严谨,需要优化。

优化后的代码如下:抽出可重复性使用的代码工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public?final?class?JdbcUtils?{
????private?static?String?url?=?"jdbc:mysql://localhost:3306/jdbc";
????private?static?String?user?=?"root";
????private?static?String?password?=?"123456";
?
????private?JdbcUtils()?{
????}
????????//JVM加载类时就进行驱动注册
????static?{
????????try?{
????????????Class.forName("com.mysql.jdbc.Driver");
????????}?catch?(ClassNotFoundException?e)?{
????????????throw?new?ExceptionInInitializerError(e);
????????}
????}
?
????public?static?Connection?getConnection()?throws?SQLException?{
????????return?DriverManager.getConnection(url,?user,?password);
????}
?
????public?static?void?free(ResultSet?rs,?Statement?st,?Connection?conn)?{
????????try?{
????????????if?(rs?!=?null)
????????????????rs.close();
????????}?catch?(SQLException?e)?{
????????????e.printStackTrace();
????????}?finally?{
????????????try?{
????????????????if?(st?!=?null)
????????????????????st.close();
????????????}?catch?(SQLException?e)?{
????????????????e.printStackTrace();
????????????}?finally?{
????????????????if?(conn?!=?null)
????????????????????try?{
????????????????????????conn.close();
????????????????????}?catch?(SQLException?e)?{
????????????????????????e.printStackTrace();
????????????????????}
????????????}
????????}
????}
}

?

优化模板代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public?class?Base?{
?
????/**
?????*?@param?args
?????*?@throws?Exception
?????*/
????public?static?void?main(String[]?args)?throws?Exception?{
????????template();?
?
????}
?
????static?void?template()?throws?Exception?{
????????Connection?conn?=?null;
????????Statement?st?=?null;
????????ResultSet?rs?=?null;
????????try?{
????????????//?2.建立连接
????????????conn?=?JdbcUtils.getConnection();
????????????//?conn?=?JdbcUtilsSing.getInstance().getConnection();
????????????//?3.创建语句
????????????st?=?conn.createStatement();
?
????????????//?4.执行语句
????????????rs?=?st.executeQuery("select?*?from?user");
?
????????????//?5.处理结果
????????????while?(rs.next())?{
????????????????//?参数中的1,2,3,4是指sql中的列索引
????????????????System.out.println(rs.getObject(1)?+?"\t"?+?rs.getObject(2)
????????????????????????+?"\t"?+?rs.getObject(3)?+?"\t"?+?rs.getObject(4));
????????????}
????????}?finally?{
????????????JdbcUtils.free(rs,?st,?conn);
????????}
?
????}

?

JDBC一般流程及优化过程

原文:http://jlins.iteye.com/blog/2165971

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!