JDBC基础理论与实践

Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

 

 

Java技术中,JDBC是所有数据库操作的基础,不管是iBATIS还是Hibernate,其基础无不来自于JDBC。掌握了JDBC,对通用库的理解就简单了。

一. 数据库连接器

数据库连接器(java.sql.Connection)是JDBC操作的核心,一次完整的数据库操作均起始于数据库连接器。

有多种方式创建数据库连接器,基本方式有两种:DriverManager方式和DataSource方式。其中DriverManager是最原始的连接方式;DataSource方式统一了接口,通过不同的实现完成更多的任务,如Apache的DBCP就在DataSource基础上提供了强大的缓冲池技术,大大提高了创建数据库连接器的速度。

创建数据库连接器时需要提供四个基本数据,分别为

JDBC驱动:driverClassName
数据库连接字:url
数据库访问所需要的用户名:username
数据库访问所需要的密码:password

其中

JDBC驱动的值可以是:

MySQL:"com.mysql.jdbc.Driver"
PostgreSQL:"org.postgresql.Driver"
Oracle:"oracle.jdbc.driver.OracleDriver"
Sybase:"com.sybase.jdbc2.jdbc.SybDriver"
SQLServer:"com.microsoft.jdbc.sqlserver.SQLServerDriver"
DB2:"com.ibm.db2.jdbc.net.DB2Driver"

数据库连接字的值可以是:

MySQL:"jdbc:mysql://DbComputerNameOrIP:3306/DbName"
PostgreSQL:"jdbc:postgresql://DbComputerNameOrIP:3306/DbName"
Oracle:"jdbc:oracle:thin:@DbComputerNameOrIP:1521:DbName"
Sybase:"jdbc:sybase:DbName:DbComputerNameOrIP:2638"
SQLServer:"jdbc:microsoft:sqlserver://DbComputerNameOrIP:1433;databaseName=DbName"
DB2:"jdbc:db2://DbComputerNameOrIP/DbName"

以DriverManager方式创建数据库连接器的代码如下:

以DataSource方式创建数据库连接器的代码如下:

  

二. SQL声明

在一个数据库连接器中,我们可以调用多条SQL语句。每一条SQL语句的执行由一个SQL声明(java.sql.Statement)完成。

数据库连接器有三种声明SQL的方式:一般声明、预编译声明和存储过程声明。几种声明的本质区别在于SQL语句的指定时机,一般声明在执行时指定SQL语句,而后两种声明则在创建时指定SQL语句。

SQL声明的执行方式又分两种:基于检索的executeQuery方法,用于SELECT语句;以及基于变更的executeUpdate方法,用于INSERT、UPDATE、DELETE语句。同时还提供了通用性更强的execute方法。

一般声明

创建一个一般声明很简单,代码如下:

 

一般声明通过executeQuery执行一个查询语句(包括SELECT),查询语句的执行结果以结果集(java.sql.ResultSet)的形式提供。代码如下:

上述代码也可用如下方式完成:

 

一般声明通过executeUpdate执行一个更新语句(包括UPDATE、INSERT、DELETE),通过更新操作影响到的元素个数决定成功与否。代码如下:

上述代码也可用如下方式完成:

 

预编译声明

与一般声明不同,预编译声明则是在执行前将SQL语句进行预处理,其最大的用处在于可将SQL语句参数化。创建预编译声明时需要指定一个SQL语句,语句中不确定的参数用“?”表示,参数根据序号(以1开始)通过一系列set方法设置。预编译声明的执行操作与一般声明类似但不提供参数。代码样例如下:

    

 

存储过程声明

存储过程(Stored Procedure)属于数据库技术,存储过程直接保存在数据库中,由数据库对其进行优化。数据库连接器通过prepareCall创建存储过程声明。代码如下:

 

关于存储过程声明的详细用法,可参考:
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0802tiwary/

 

三. 事务处理

根据业务的不同多个SQL声明可以组成一个事务,在一个事务中保证了其中的所有SQL声明或者全部执行成功或者都不执行。简单的说,事务就是把一件事情分成几个步骤,并且确保这件事情的所有步骤要么全部做完,要么就全部都没做,不存在只做了其中几个步骤的可能。

在JDBC中事务的处理由数据库连接器完成,事务处理的最小单元就是一个SQL声明。数据库连接器中针对事务的操作有两种:commit及rollback。commit使SQL声明的执行立即生效而rollback则使执行了的SQL声明无效。

根据业务的不同,数据库连接器提供两种处理事务的策略:自动提交与手动提交。默认情况下,数据库连接器的事务处理策略是自动提交,在自动提交模式下,commit及rollback不必手动调用。JDBC会为每一个SQL声明提供独立的事务,执行每一个声明时立即commit,并在出现错误时自动rollback。这种传统的提交方式不能完成我们对事务的要求,所以我们必须用手动提交的方式完成事务处理。手动提交模式需要根据业务逻辑在适当的位置调用commit及rollback方法。将数据库连接器的事务处理策略设置为手动提交的代码如下:

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值