JDBC要点记录

概述:JDBC就是java定义的通用的数据库API。通过不同数据库驱动可以方便连接不同的数据库如mysql,oracle,sql server等。


JDBC的使用

1.导入第三方库

需要导入相应的开发包,如使用MySql则导入mysql-connector-java-5.1.39.zip

2.获取Connnection

有几种方式不同连接到数据库
可以采用将相应信息如数据库url ,数据库名,密码等信息写入property配置文件。

配置文件在项目开发中十分常见通用,可以更好的解耦,如当你更换url,数据库,或者使用其他厂商数据库时,只需要改配置文件即可。

注意清理数据库相关资源也是不可或缺的。

代码片段:

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
 
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;

try {

//---------------最原始的链接方法 ,耦合性较强--------------------------------
/*
// step1: 驱动管理器 ,注册驱动
DriverManager.registerDriver(new Driver());

//step2: get connection
Connection MySQLConnection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/homeworkdb", "root", "root");

//step3: create statement
java.sql.Statement statement = MySQLConnection.createStatement();
*/


//--------------利用Class类加载器 搭配 property配置文件进行解耦----------------

Properties dbconfigProperties = new Properties();
dbconfigProperties.load(new FileInputStream(new File("DBConf.prop")));

//通过类加载器,加载配置文件中指定的数据库驱动,创建mysql driver对象
Class.forName(dbconfigProperties.getProperty("dbdriver")).newInstance();

connection = DriverManager.getConnection(dbconfigProperties.getProperty("dburl"), dbconfigProperties);
statement = connection.createStatement();

//step4: create sql
resultSet = statement.executeQuery("select * from tutors;");

// do sth with resultSet



} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
//释放资源
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}


JDBC - CRUD操作

CRUD-增删改查是数据库也是软件开发的常见任务。

关键还是 编写 SQL语句的功力。
而作为开发工程师(非DBA,架构师等)最重要的数据库能力就是各种select语句的编写(join关联多表等)。

JDBC操作数据库用到的几个关键对象:

  • Connection
  • Statement
  • PrepareStatement (预编译可以提高效率等,同时可以结合批处理addbatch())
  • ResultSet

具体的使用方法查看文档即可。
当需要更好的封装JDBC进行单纯地数据库操作(而非ORM等高级对象映射),可以自己简单封装一下,不过效率肯定不能恭维(练习一下造轮子功力&封装能力即可)。

真正通用的方案是选择Apache开源库:

apache jdbc dbutils 官网给出了具体的使用示范。

轻量小乔,方便快捷。可以将resaultset转化为JavaBean,list ,map 等各种数据类型。简化了不少工作。


评论