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
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);
}
}
|