在这一小节,咱们将学习DriverManager对象和connection对象。html
DriverManager对象用于从驱动里获取一个connection对象。java
而connection对象功能颇多,可管理链接、管理事务、创建语句对象等。mysql
在打开与数据库的JDBC链接以前,您须要作的第一件事是加载数据库的JDBC驱动程序。如今已经不须要程序员作这些事啦,由于从Java 6开始,Java 已经内置这步操做。程序员
Java以前是这样加载JDBC驱动程:sql
语法:数据库
1
|
Class.forName(
"driverClassName"
);
|
加载MySQL数据库:ide
1
|
Class.forName("com.mysql.jdbc.Driver");
|
能够经过调用java.sql.DriverManager类方法getConnection()打开JDBC Connection。 这种方法有三种花样。学习
第一种方法仅将数据库的URL做为参数。url
1
2
3
|
Connection connection =
DriverManager.getConnection(url);
|
url是数据库的URL。不一样的数据库url值不同,上面是MySQL数据库的URL。spa
第二种方法将数据库的URL,用户名和密码做为参数。
1
2
3
4
5
|
String user =
"root"
;
String password =
"123456"
;
Connection connection =
DriverManager.getConnection(url,user,password);
|
user和password参数是数据库的用户名和密码。
第三种方法是将数据库URL和Properties对象做为参数
1
2
3
4
5
6
|
Properties properties =
new
Properties( );
properties.put(
"user"
,
"root"
);
properties.put(
"password"
,
"123456"
);
Connection connection =
DriverManager.getConnection(url, properties);
|
Properties对象用于在打开链接时传递数据库所需的特殊属性。
当JDBC操做完成(执行完查询、删除、修改)后,应关闭它。
关闭链接有两种花样。
这是经过调用Connection.close()方法完成的,以下所示:
1
|
connection.close();
|
数据库链接占用了必定数量的资源,所以关闭JDBC链接很是重要。
能够经过Java 7中添加的Java Try-with-resources自动关闭JDBC Connection 。下面的示例演示那如何使用Try-with-resources关闭链接:
1
2
3
4
5
6
7
8
9
|
String user =
"root"
;
String password =
"123456"
;
try
(Connection connection =
DriverManager.getConnection(url, user, password)) {
//其它业务代码
}
|
Connection在try块的括号内打开。
在try语句块中,能够像往常同样使用数据库链接。
一旦执行退出try块,Connection将自动关闭。
这样就不会忘记本身关闭Connection。
事务的概念是:全部的操做要么同时成功,要么同时失败。
在JDBC里执行事务须要两步:先开户事务,再提交事务。若是事务失败,就产生事务回滚(全部的操做都捎回)。
在JDBC里有两种方式执行事务:一是自动执行,二是手动执行。
Connection默认是自动提交事务,也能够手动开户自动提交事务。
1
|
connection
.setAutoCommit(
true
);
|
Connection setAutoCommit()方法,当参杂是false时,是手动提交事务。
在手动提交模式,则必须经过调用Connection commit()方法显式提交每一个数据库事务。
1
2
3
4
5
|
connection.setAutoCommit(
false
);
// 其它业务代码
connection.commit();
|
若是事务执行失败时,就会触发回滚操做,全部的操做都取消。
1
2
3
4
5
6
7
8
9
|
try
{
connection.setAutoCommit(
false
);
//开启手动提交事务
// 其它业务代码
connection.commit();
}
catch
(SQLException e) {
// 产生异常
connection.rollback();
// 事务回滚
}
|
Connection 可创建Statement对象和PreparedStatement对象。
Statement对象可用于对数据库执行SQL更新 ,或对数据库执行SQL查询 。
1
|
Statement statement =connection.createStatement();
|
PreparedStatement对象,叫预处理对象,PreparedStatement对象能够对数据库执行SQL更新,或对数据库执行SQL查询。
1
|
PreparedStatement pre = connection.prepareStatement(sql);
|
Connection 对象能够获取DatabaseMetaData对象,DatabaseMetaData对象能够获取数据库的相关信息,好比:表、主键、列、索引等。
1
|
DatabaseMetaData metaData = connection.getMetaData();
|