JavaEE基础—JDBC

JDBC

JDBC简介

JDBC概念

  • JDBC就是使用Java语言操作关系型数据库的一套api
  • 全称: Java database connectivity

JDBC本质

  • 官方定义的一套操作所有关系型数据库的规则,也就是接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  • 我们可以使用这套接口编程,真正执行的代码是驱动jar包中的实现类

JDBC好处

  • 各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发
  • 可随时替换底层数据库,访问数据库的Java代码基本不变

JDBC快速入门

  1. 创建工程,导入驱动jar包
  2. 注册驱动
Class.forName(com.mysql.cj.jdbc.Driver);
  1. 获取链接
Connection conn = DriverManager.getConnection(url,user,pwd);
  1. 生成对象
String sql = "select * from ..."
  1. 生成执行SQL语句的对象
Statement stmt = conn.createStatement();
  1. 执行SQL语句
stmt.executeQuery(sql);
  1. 获取返回结果
ResultSet rs = stmt.executeQuery(sql);
  1. 释放资源
stmt.close();
conn.close();

JDBC API

DriverManager

DriverManager(驱动管理类)作用:

  1. 注册驱动
Class.forName(com.mysql.cj.jdbc.Driver);

Driver源码

static{
	try{
		DriverManager.registerDriver(new Driver());
	}catch(SQLException){
		throw new RuntimeException("Can't register driver");
	}
}
  1. 获取数据库链接
Connection conn = DriverManager.getConnection(url,user,pwd);
  • url:链接路径

语法:jdbc:mysql://ip地址:端口号/数据库名称?参数键值对1&参数键值对2…

实例:jdbc:mysql://localhost:3306/homework27

细节:

  • 如果链接的是本机的MySQL服务器,并且端口号是3306,则url可以简写为jdbc:mysql:///数据库名称
  • 配置useSSL=false参数,禁用安全连接方式,解决警告提示

Connection

与特定数据库的连接(会话)。 执行SQL语句并在连接的上下文中返回结果。

Connection作用:

  1. 获取执行SQL的对象
  • 普通执行SQL对象
Statement createStatement();
  • 预编译SQL的执行SQL对象:放置SQL注入
PrepaerdStatement createPreparedStatement(sql);
  • 执行存储过程的对象
CallableStatement prepareCall(sql)
  1. 事务管理
  • MySQL事务管理

开启事务:BEGIN;/START TRANSACTION;

提交事务:COMMIT;

回滚事务:ROLLBACK

MySQL默认自动提交事务

  • JDBC事务管理:Connection接口中定义了三个对应的方法

开启事务:setAutoCommit(boolean autoCommit),true位自动提交事务,false位手动提交事务,即开启事务

提交事务:commit();

回滚事务:rollback();

Statement

Statement作用:执行SQL语句

int executeUpdate(sql):执行DML、DDL语句
返回值:
	1.DML语句影响的行数
	2.DDL语句执行后,执行成功也可能返回0
ResultSet executeQuery(sql):执行DQL语句
返回值:ResultSet结果集

ResultSet

ResultSet作用:封装DQL查询语句的结果

ResultSet stmt.executeQuery(sql):执行DQL语句,返回ResultSet对象
  • 获取查询结果
boolean next():将光标从当前位置向前移动一行,判断当前行是否位有效行
返回值:
	true:有效行,当前行有数据
	false:无效行,当前行没有数据
xxx getxxx(参数):获取数据
xxx:数据类型;
参数:
  • 使用步骤
  1. 游标西昂下移动一行,判断改行是否有数据
  2. 获取数据:getxxx();
while(rs.next()){
	rs.getxxx();
}

PreparedStatement

PreparedStatement作用:

  1. 预编译SQL语句并执行,防止SQL注入问题
  • 获取PreparedStatement对象
//SQL语句中的参数,使用?占位符代替
String SQL  = "select * from user where username=? and password = ?"
//通过Connection对象获取,并传入对应的SQL语句
PreaperdStatement pstmt = conn.prepareStatement(SQL)
  • 设置参数值
PreparedStatement对象:setxxx(参数1,参数2):给?赋值
xxx:数据类型;如setInt(参数1,参数2)
参数:
	参数1:?的位置编号,从1开始
	参数2:给?的值
  • 执行SQL
executeQuery()/executeUpdate()  不需要在传递SQL语句
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值