转载至:https://www.liyongzhen.com/
在这一小节,我们将学习DriverManager对象和connection对象。
DriverManager对象用于从驱动里获取一个connection对象。
而connection对象功能颇多,可管理连接、管理事务、建立语句对象等。
加载JDBC驱动程序
在打开与数据库的JDBC连接之前,您需要做的第一件事是加载数据库的JDBC驱动程序。现在已经不需要程序员做这些事啦,因为从Java 6开始,Java 已经内置这步操作。
Java之前是这样加载JDBC驱动程:
语法:
1
|
Class.forName( "driverClassName" );
|
加载MySQL数据库:
1
|
Class.forName("com.mysql.jdbc.Driver"); |
打开JDBC连接
可以通过调用java.sql.DriverManager类方法getConnection()打开JDBC Connection。 这种方法有三种花样。
使用URL打开连接
第一种方法仅将数据库的URL作为参数。
1
2
3
|
Connection connection = DriverManager.getConnection(url);
|
url是数据库的URL。不同的数据库url值不一样,上面是MySQL数据库的URL。
使用URL,用户名和密码打开连接
第二种方法将数据库的URL,用户名和密码作为参数。
1
2
3
4
5
|
String user = "root" ;
String password = "123456" ;
Connection connection = DriverManager.getConnection(url,user,password);
|
user和password参数是数据库的用户名和密码。
使用URL和Properties对象打开连接
第三种方法是将数据库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连接
当JDBC操作完成(执行完查询、删除、修改)后,应关闭它。
关闭连接有两种花样。
普通的close方法
这是通过调用Connection.close()方法完成的,如下所示:
1
|
connection.close(); |
数据库连接占用了一定数量的资源,因此关闭JDBC连接非常重要。
通过Try-With-Resources关闭连接
可以通过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对象
Statement对象可用于对数据库执行SQL更新 ,或对数据库执行SQL查询 。
1
|
Statement statement =connection.createStatement(); |
PreparedStatement对象
PreparedStatement对象,叫预处理对象,PreparedStatement对象可以对数据库执行SQL更新,或对数据库执行SQL查询。
1
|
PreparedStatement pre = connection.prepareStatement(sql); |
元数据对象
Connection 对象可以获取DatabaseMetaData对象,DatabaseMetaData对象可以获取数据库的相关信息,比如:表、主键、列、索引等。
1
|
DatabaseMetaData metaData = connection.getMetaData(); |