JDBC

JDBC的使用

JDBC的快速入门

JDBC 就是使用Java语言操作关系型数据库的一套API,全称:( Java DataBase Connectivity ) Java 数据库连接
本质:
官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口.
各个数据库厂商去实现这套接口,提供数据库驱动jar包.
我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类.

JDBC代码步骤

  1. 创建工程,导入驱动jar包(建议使用对应版本或版本相近的jar包)
    注意:将mysql的驱动包放在模块下的lib目录(随意命名)下,并将该jar包添加为库文件
  2. 注册驱动(在mysql5之后的驱动jar包,这一步可以省略掉,因为会自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类)
Class.forName("com.mysql.cj.jdbc.Driver");
  1. 获取连接(注意db01为自己的数据库名字)
String url = "jdbc:mysql://localhost:3306/db01?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);
  1. 定义sql语句(双引号内写入sql语句)
String sql = "update...";
  1. 获取执行SQL对象(执行SQL语句需要SQL执行对象,而这个执行对象就是Statement对象)
Statement stmt = conn.createStatement();
  1. 执行sql
int count = stmt.executeUpdate(sql);//受影响的行数
  1. 处理返回结果
System.out.println(count);
  1. 释放资源
statement.close();
conn.close();

JDBC API详解

1.DriverManager

在这里插入图片描述

registerDriver方法是用于注册驱动的,但是我们之前做的入门案例并不是这样写的。而是如下实现:
在这里插入图片描述

查询了MySQL提供的Driver类,在该类中的静态代码块中已经执行了 DriverManager 对象的registerDriver() 方法进行驱动的注册了,那么我们只需要加载 Driver 类,该静态代码块就会执行。而Class.forName(“com.mysql.jdbc.Driver”); 就可以加载Driver 类。

在这里插入图片描述
参数:
url : 连接路径
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2…
示例:jdbc:mysql://localhost:3306/db01
细节:
如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称?参数键值对
配置 useSSL=false 参数,禁用安全连接方式,解决警告提示
user :用户名
poassword :密码

2.Connection

Connection(数据库连接对象)作用:

  1. 获取执行 SQL 的对象
  2. 管理事务

3. Statement

Statement对象的作用就是用来执行SQL语句。而针对不同类型的SQL语句使用的方法也不一样。
执行DDL、DML语句(执行完DML语句,返回受影响的行数。执行完DDL语句,返回可能是0)
在这里插入图片描述
执行DQL语句(返回结果集对象)
在这里插入图片描述

4.ResultSet

ResultSet(结果集对象)作用:封装了SQL查询语句的结果。
而执行了DQL语句后就会返回该对象,对应执行DQL语句的方法如
下:
ResultSet executeQuery(sql):执行DQL 语句,返回ResultSet 对象

那么我们就需要从 ResultSet 对象中获取我们想要的数据。
ResultSet 对象提供了操作查询结果数据的方法,如下:

boolean next()
将光标从当前位置向前移动一行,判断当前行是否为有效行
方法返回值说明:
true : 有效航,当前行有数据
false : 无效行,当前行没有数据
xxx getXxx(参数):获取数据
xxx : 数据类型;如: int getInt(参数)String getString(参数)
参数:
int类型的参数:列的编号,从1开始
String类型的参数: 列的名称

5.PreparedStatement

PreparedStatement 好处:

  1. 预编译SQL,性能更高
  2. 防止SQL注入:将敏感字符进行转义

开启预编译功能:
在代码中编写url时需要加上以下参数。而我们之前根本就没有,开启预编译功能,只是解决了SQL注入漏洞。

useServerPrepStmts=true

小结:

  • 在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译(这些步骤很耗时)。
  • 执行时就不用再进行这些步骤了,速度更快。
  • 如果sql模板一样,则只需要进行一次检查、编译。
  • 38
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值