当前位置: 首页 > news >正文

黑马JavaWeb+AI笔记 Day05 Web后端基础(JDBC)

✅JDBC是什么?

  • 全称:(JavaDataBaseConnectivity)Java数据库连接
  • 概念:使用Java语言操作关系型数据库的一套API


✅JDBC本质

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


✅JDBC好处

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


✅JDBC流程

创建工程

注册驱动

获取连接

定义SQL语句

获取执行SQL对象

执行SQL

处理返回结果

释放资源

//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");//2.获取连接
String url = "jdbc:mysql://127.0.0.1:3306/db1";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);//3.定义sql
String sql = "update account set money = 2000 where id = 1";//4.获取执行sqL的对象Statement
Statement stmt = conn.createStatement();//5.执行sql
int count = stmt.executeUpdate(sqL);//受影响的行数//6.处理结果
System.out.println(count);//7.释放资源
stmt.close();
conn.close();


✅JDBC API 详解

DriverManager
  • 注册驱动(可以省略)

        Driver 类中存在静态代码块使用DriverManager.rigisterDriver()方法

  • 获取数据库连接

        getConnection(String url, String username, String password)

        url:jdbc:mysql:///数据库名?参数键值对


Connection
  • 获取执行SQL对象 
//普通执行SQL对象
Statement  createStatement()
//预编译SQL的执行SQL对象:防止SQL注入
PreparedStatement  prepareStatement(sql)
//执行存储过程的对象
CallableStatement  prepareCall(sql)
  • 管理事务

开启事务:setAutoCommit(booleanautoCommit):true为自动提交事务;false为手动提交事务,即为开启事务

提交事务:commit()

回滚事务:rollback()


Statement
  • 执行SQL语言

int executeUpdate(sql): 执行DML、DDL语句

返回值:1.DML语句影响的行数   2.DDL语句执行后,执行成功也可能返回0

ResultSet executeQuery(sql): 执行DQL语句

返回值:ResultSet 结果集对象


ResultSet
  • 封装了DQL查询语句的结果

ResultSet stmt.executeQuery(sql):执行DQL语句,返回ResultSet对象 

booleannext():(1) 将光标从当前位置向前移动一行(2) 判断当前行是否为有效行

返回值:true:有效行,当前行有数据        false:无效行,当前行没有数据

xxx getXxx(参数):获取数据
xxx:数据类型;如:int getlnt(参数);String getString(参数)
参数:
int:列的编号,从1开始
String:列的名称


PreparedSteatement
  • 预编译SQL并执行SQL语句

①获取PreparedStatement对象

//SQL语句中的参数值,使用?占位符替代
String sql ="select * from user where username = ? and password = ?";//通过Connection对象获取,并传入对应的sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);

②设置参数值

PreparedStatement对象:setXxx(参数1,参数2):给?赋值
Xxx:数据类型;如setlnt(参数1,参数2)
参数:
参数1:?的位置编号,从1开始
参数2:?的值

③执行SQL

executeUpdate();/executeQuery();:不需要再传递sql

文章转载自:

http://ioW7owix.xsybm.cn
http://PG62GCv2.xsybm.cn
http://s2kjW0cP.xsybm.cn
http://4xzZkbIf.xsybm.cn
http://XFVwJicZ.xsybm.cn
http://NwiK4QcR.xsybm.cn
http://YvPNrTPW.xsybm.cn
http://48IyhpWH.xsybm.cn
http://CqcO2Vw3.xsybm.cn
http://i57a8zgt.xsybm.cn
http://YN0AzS2j.xsybm.cn
http://ckf6mkjN.xsybm.cn
http://rFGStjnQ.xsybm.cn
http://fiKqqiIy.xsybm.cn
http://l6mvvUS3.xsybm.cn
http://0SOK76pJ.xsybm.cn
http://iLIkiHvL.xsybm.cn
http://73PJ4oFp.xsybm.cn
http://Z8qKqEYt.xsybm.cn
http://zzIySoA3.xsybm.cn
http://FTCqNSI3.xsybm.cn
http://8un1DXHv.xsybm.cn
http://i1k2Lyzh.xsybm.cn
http://AOHinnAs.xsybm.cn
http://GWS3xk3K.xsybm.cn
http://nULgL1l4.xsybm.cn
http://GHpq0Q4a.xsybm.cn
http://i3w4umAO.xsybm.cn
http://yas6pB7X.xsybm.cn
http://NzVLmY9e.xsybm.cn
http://www.dtcms.com/a/383210.html

相关文章:

  • Open3D 射线投射(Ray Casting,Python)
  • RL【10-1】:Actor - Critic
  • 计算机视觉(opencv)实战二十一——基于 SIFT 和 FLANN 的指纹图像匹配与认证
  • 纯`css`固定标题并在滚动时为其添加动画
  • 金融科技:银行中的风险管理
  • 【办公类-113-01】20250914小2班生日手机备忘录提示、手机同屏到电脑UIBOT(双休日前移、节假日前移)
  • K8s学习笔记(二) Pod入门与实战
  • 如何下载Jemeter测试工具;如何汉化Jmeter2025最新最全教程!
  • 子网划分专项训练-2,eNSP实验,vlan/dhcp,IP规划、AP、AC、WLAN无线网络
  • 【LLM】大模型训练中的稳定性问题
  • Electron第一个应用
  • 企业设备维护成本预测模型全解析
  • 【数据结构】二叉树的概念
  • 架构思维: 高并发场景下的系统限流实战
  • 【开题答辩全过程】以 SpringBoot的乡村扶贫系统为例,包含答辩的问题和答案
  • Git 打标签完全指南:从本地创建到远端推送
  • RabbitMQ如何保障消息的可靠性
  • window显示驱动开发—枚举显示适配器的子设备
  • 《嵌入式硬件(九):基于IMX6ULL的蜂鸣器操作》
  • 《嵌入式硬件(十二):基于IMX6ULL的时钟操作》
  • Redis最佳实践——性能优化技巧之监控与告警详解
  • PySpark基础例题(包含map、reduceByKey、filter、sortBy等算子)
  • 导购APP佣金模式的分布式锁实现:基于Redis的并发控制策略
  • 运维自动化工具Ansible大总结20250914
  • Linux 库开发入门:静态库与动态库的 2 种构建方式 + 5 个编译差异 + 3 个加载技巧,新手速看
  • Effective Python 第28条:Python列表推导式的简洁与复杂性管理
  • 【MySQL】从零开始学习MySQL:基础与安装指南
  • 基于STM32的病人监护系统
  • Python与Go结合
  • AI大师系列——杰夫·辛顿(深度学习)