工具类
如果每次操作都需要写代码来建立数据的连接的释放连接的话,那么开发的速度和效率会很低。这时我们应该考虑将数据的连接和释放进行封装。这样就不必每次都编写连接和释放的代码了,只需调用已经编写好的即可。
普通的抽取
1 | public class ToolsV1 { |
使用配置文件
使用ResourceBundle
编写配置文件
在src下新建db.propertie文件,【注意文件后缀要为.propertie的文件】。内容如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=utf8
username=root
password=root
具体实现
具体实现如下: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
44
45
46
47
48
49public class ToolsV2 {
/**
* 公共连接数据库
* @return Connection
*/
private static String driver = null;
private static String url = null;
private static String username = null;
private static String password = null;
//静态代码块加载配置文件
static{
//载入配置文件
ResourceBundle bund = ResourceBundle.getBundle("db");
driver = bund.getString("driver");
url = bund.getString("url");
username = bund.getString("username");
password = bund.getString("password");
}
public static Connection Conn(){
Connection conn = null;
try {
// 注册驱动
Class.forName(driver);
// 获取Connection连接
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
//返回获取到的连接
return conn;
}
/**
* 公共释放数据库连接
*/
public static void release(Connection conn, PreparedStatement prep, ResultSet re){
try {
if (re!=null){re.close();}
if (prep!=null){prep.close();}
if (conn!=null){conn.close();}
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用Properties文件流
编写配置文件
在src下新建db.propertie文件,【注意文件后缀要为.propertie的文件】。内容如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=utf8
username=root
password=root
具体实现
具体实现如下: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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61public class ToolsV3 {
/**
* 公共连接数据库
* @return Connection
*/
private static String driver = null;
private static String url = null;
private static String username = null;
private static String password = null;
//静态代码块加载配置文件
static{
//通过类加载器
try {
//获取当前类的类加载器
ClassLoader classLoader = ToolsV3.class.getClassLoader();
//通过类加载器的方法获取到一个输入流
InputStream is = classLoader.getResourceAsStream("db.properties");
//实例化一个Properties对象
Properties pro = new Properties();
//加载一个输入流
pro.load(is);
//获取相关参数的值
driver = pro.getProperty("driver");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection Conn(){
Connection conn = null;
try {
// 注册驱动
Class.forName(driver);
// 获取Connection连接
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
//返回获取到的连接
return conn;
}
/**
* 公共释放数据库连接
*/
public static void release(Connection conn, PreparedStatement prep, ResultSet re){
try {
if (re!=null){re.close();}
if (prep!=null){prep.close();}
if (conn!=null){conn.close();}
} catch (Exception e) {
e.printStackTrace();
}
}
}
调用
将其中的ToolsV3根据情况具体对应调用就行。例如,使用普通抽取就使用ToolsV1,使用ResourceBundle就调用ToolsV2
具体实现
1 | public class JDBC_Tools_Test { |