JDBC的层次结构和基本构成

JDBC的层次结构

JDBC API提供了以下接口和类:
DriverManager: 这个类管理数据库驱动程序的列表。确定内容是否符合Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在子协议的第一个驱动器将被用来建立数据库连接。
Driver: 此接口处理与数据库服务器通信。很少直接直接使用驱动程序(Driver)对象,一般使用DriverManager中的对象,它用于管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息
Connection:Driver 或者 DriverManager根据连接的url 和参数信息创建Connection实例,用来维持和数据库的数据通信,如果没有销毁或者调用close()方法,此对象和数据库的对象会一直保持连接;
Statement:Connection创建Statement对象,表示需要执行的sql语句或者存储过程;
ResultSet: 表示Statement执行完SQL语句后返回的结果集。
SQLException: 这个类用于处理发生在数据库应用程序中的任何错误。

总体而言,JDBC包含以下几大角色 : Driver、DriverManager、Connection、Statement、ResultSet。这几大角色之间的层次关系如下图所示:
在这里插入图片描述
Collection的作用
在这里插入图片描述
Connection表示与特定的数据库的连接(会话)
Connection对象的数据库能够提供描述其表、所支持的SQL语法、存储过程、此连接功能等等的信息

在一般实际使用情况下,我们关注的Connection的功能有以下几点:
1.创建可以执行sql语句或者存储过程的对象statement,用来和数据库进行交互
比如,以下代码创建了几种不同类型的Statement:
//加载Oracle数据库驱动
Class.forName(“oracle.jdbc.driver.OracleDriver”);
//根据特定的URL,返回可以接受此URL的数据库驱动对象
Driver driver = DriverManager.getDriver(URL);
//使用数据库驱动创建数据库连接Connection会话
Connection connection = driver.connect(URL, props);
//创建静态的sql语句 ,Statement 对象将 SQL 语句发送到数据库。
Statement staticStatement= connection.createStatement();
//创建CallableStatement 对象来调用数据库存储过程。
CallableStatement callableStatement = connection.prepareCall(sqlString);
//创建参数化的Statement对象
PreparedStatement preparedStatement = connection.prepareStatement(sqlString);

2. 控制sql语句的事务
Connection默认情况下,对于创建的statement执行的sql语句都是自动提交的,即在statement语句执行完后,自动执行commit操作,将结果影响到物理数据库。为了满足更好地事务控制需求,我们也可以手动地控制事务(取消自动提交,setAutoCommit(false)),手动地对statement 的sql语句执行进行提交(commit)或者回滚(rollback)。

String sqlString="insert into tableName(column1,column2) values(value1,value2)";
//加载Oracle数据库驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//根据特定的URL,返回可以接受此URL的数据库驱动对象
Driver driver = DriverManager.getDriver(URL);
//使用数据库驱动创建数据库连接Connection会话
connection = driver.connect(URL, props);
//使用自定义的事务,要设置connection不自动提交
connection.setAutoCommit(false);
//创建静态的sql语句 Statement 对象来将 SQL 语句发送到数据库。
Statement staticStatement= connection.createStatement();
try{
   
//执行插入操作
staticStatement.execute(sqlString);
staticStatement.getConnection(
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值