JDBC的简介及使用

JDBC即Java Data Base Connectivity,Java数据库连接。它是一种用于执行SQL语句的Java API,是属于Java中数据库连接的一个规范。它的API主要由java.sql.* 和javax.sql.* 中的类和包组成。

现在很多项目都是使用ORM框架来进行与数据库映射的,例如MyBatis和Hibernate都是在JDBC基础上进行了一层封装来实现的。所以说JDBC还是非常重要的。

一、JDBC工作原理

1.1 JDBC数据库层次结构

在这里插入图片描述
根据这个层次结构能够看出来,其实JDBC最低层就是从数据库来向上延伸的。

对于他的驱动层,由数据库厂商来提供数据库JDBC的一个驱动程序,然后Sun公司在去以这个程序来实现Java的API。最后再由ORM框架等对其进行一个包装和应用。

1.2 整体工作流程

  1. 加载驱动。
  2. 建立Connection连接。
  3. 创建操作命令对象Statement。
  4. 编写SQL语句并执行。
  5. 获取到ResultSet结果集对象并处理。
  6. connection.close()关闭连接。

二、主要用到的三个接口

2.1 数据库连接Connection

Connection接口实现类是由数据库提供的,获取Connection对象主要有两种方式:
一种是DriverManager驱动管理类的静态方法获取,另一种是通过DataSource数据源对象获取。

2.1.1 DriverManager

首先需要加载JDBC驱动程序,然后再创建数据库连接。

//加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
//创建数据库连接
Connection connection = DriverManager.getConnection(url);
2.1.2 DataSource

该方法主要是跟新建一个数据源,然后通过设置该MySQL数据库的url地址,以及用户名和密码,这样就能够将数据源连接到相应的对象,然后通过这个数据源对象来获取到同数据库的连接。

DataSource ds = new MysqlDataSource();
//设置URL
((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
//设置用户名
((MysqlDataSource) ds).setuser("root");
//设置密码
((MysqlDataSource) ds).setPassword("root");
//最终根据这个数据源来获取数据库连接
Connection connection = ds.getConnection();
2.1.3 两种方式的区别
  1. DriverManager:该方法获取到的Connection连接,无法进行重复利用,每次使用完要通过connection.close() 来释放连接资源。
  2. DataSource:这种方式提供了数据库连接池的支持,连接池在初始化时会创建一定数量的数据库连接,这些连接是可以重复使用的,每次使用完一个连接以后,不会进行资源释放,而是重新放回到数据库连接池中。

2.2 发送Statement

Statement对象主要是用来将SQL语句发送到数据库中的,JDBC API中主要提供了三种Statement对象,Statement、PreparedStatement和CallableStatement。

其中使用到最多的应该就是PreParedStatement。

优势:

  1. 参数化SQL查询。
  2. 性能比Statement更高。
  3. 会进行SQL预编译,提高效率。
  4. 阻止常见的SQL注入攻击。
  5. 可以使用占位符?,下标从1开始。

两种执行SQL的方法:
6. executeQuery()方法执行会返回单个结果集,多用于select查询语句。
7. executeUpdate()方法返回值是一个整数,会表明受影响的行数,多用于update、insert以及delete语句。

2.3 结果集ResultSet

ResultSet对象指返回的结果集,表示符合SQL语句条件的所有行,主要通过一系列getXXX()方法来进行数据的获取。

三、JDBC优势

  1. 开发数据库应用可以不用再限定在特定数据库厂商的API。
  2. 程序的可移植性增强。
  3. 用Java进行数据库操作可以完全面向接口进行编程。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值