2.20jdbc
一.数据库编程的必备条件
编程语言:java c c++ Python
数据库 Oracle,MySQL,SQL Server
数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包:MySQL提供了Java的驱动包
mysql=connector-java,需要就Java操作MySQL需要该驱动包
二.Java的数据库编程
JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是
Java中的数据库连接规范。这个API由 java.sql.,javax.sql. 包中的一些类和接口组成,它为Java
开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

三.jdbc工作原理
JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包
含一些通用的接口类。

JDBC优势:
Java语言访问数据库操作完全面向抽象接口编程
开发数据库应用不用限定在特定数据库厂商的API
程序的可移植性大大增强
MySQL是一个-服务器结构的程序






四.JDBC编程
1.创建项目

2.引入依赖
JDBC编程需要用到MySQL的驱动包
驱动包就是将mysql本身的API给转化成jdbc风格的
1)下载驱动包

去maven中央仓库去下载

https://mvnrepository.com/



2)导入到项目中
a)创建个目录,随便取名字

b)把刚才下载的jar文件拷贝到刚才的目录


c)右键刚刚的目录,有一个选项,佳作add as library


3)编写代码
1.创建DataSource对象,这个对象就描述了数据库服务器在哪里


父类引用指向子类实例



URL:Uniform Resource Locator
唯一资源定位符






2.建立连接



3操作数据库(插入)-构造语句



4.执行sql


5.释放资源

释放资源的时候先释放statement,再释放connection
先创建的后释放

4)总结

(42条消息) 如何查看MySQL的端口号?_安西宁的博客-CSDN博客_mysql8 查看端口
五.灵活处理插入删除数据
0.以前的方法

1.使用户输入

2.将id和name替换到insert语句对应的位置上

方法1,用字符串的拼接

方法2:替代写法

3.进行替换操作


4.打印拼接好的sql


六.注意事项
1.无法用idea连接



2.连接池


import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class JDBC {public static void main(String[] args) throws SQLException {Scanner scanner = new Scanner(System.in);// 1. 创建好数据源DataSource dataSource = new MysqlDataSource();// 设置数据库所在的地址((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");// 设置登录数据库的用户名((MysqlDataSource) dataSource).setUser("root");// 这个是设置登录数据库的密码((MysqlDataSource) dataSource).setPassword("2222");// 2. 让代码和数据库服务器建立连接~~ 相当于到达了菜鸟驿站Connection connection = dataSource.getConnection();// 2.5 让用户通过控制台输入一下待插入的数据.System.out.println("请输入学号: ");int id = scanner.nextInt();System.out.println("请输入姓名: ");String name = scanner.next();// 3. 操作数据库. 以插入数据为例.// 关键所在就是构造一个 SQL 语句~// 在 JDBC 中构造的 SQL, 不必带上 ;// ; 只是在命令行中用来区分不同的语句. 现在是直接在代码中操作~~String sql = "insert into student values(?, ?)";// 此处光是一个 String 类型的 sql 还不行, 需要把这个 String 包装成一个 "语句对象"PreparedStatement statement = connection.prepareStatement(sql);// 进行替换操作.statement.setInt(1, id);statement.setString(2, name);System.out.println("statement: " + statement);// 4. 执行 SQL , 相当于扫码取件// SQL 里面如果是 insert, update, delete, 都使用 executeUpdate 方法.// SQL 里面如果是 select, 则使用 executeQuery 方法.// 返回值就表示这个操作, 影响到了 几行. 就相当于在控制台里输入 sql 之后, 得到的数字~int ret = statement.executeUpdate();System.out.println(ret);// 5. 此时 SQL 已经执行完毕. 然后还需要释放资源.statement.close();connection.close();}
}七 .查找操作




import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class JDBCSelect {public static void main(String[] args) throws SQLException {// 查找数据库中的记录// 这个查找和前面的操作就不太一样了~~ 多了一个步骤, 要遍历结果集合~// 1. 创建数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java104?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("2222");// 2. 和数据库服务器建立连接Connection connection = dataSource.getConnection();// 3. (此处不输入条件了, 直接查找所有记录)// 4. 构造 SQLString sql = "select * from student";PreparedStatement statement = connection.prepareStatement(sql);// 5. 执行 SQL.// 此处要使用的是 executeQuery.// executeUpdate 只能返回一个 int.// executeQuery 返回的是一个 ResultSet 对象. 可以把这个对象视为是一个 "临时表"ResultSet resultSet = statement.executeQuery();// 6. 遍历临时表, 拿到里面的数据.// resultSet 简单的当成一个类似于 "迭代器" 这样的东西来看待~// next 如果没有到达末尾, 就是返回 true, 要继续循环.// next 如果到达末尾, 就返回 false, 结束循环.while (resultSet.next()) {// 在这里就可以取这一行的数据了.// 通过 ResultSet 里面的 getXXX 方法, 来获取到这里指定的列.// 取 id, id 是整数, getIntint id = resultSet.getInt("id");// 取 name, name 是 String, getStringString name = resultSet.getString("name");System.out.println(id + ": " + name);}// 7. 关闭连接, 释放资源resultSet.close();statement.close();connection.close();}
}八.workbench




相关文章:
2.20jdbc
一.数据库编程的必备条件编程语言:java c c Python数据库 Oracle,MySQL,SQL Server数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包:MySQL提供了Java的驱动包mysqlconnector-java,需要就Java操作MySQL需要该驱动包二.Java的数据库编程JDBC,即…...
【代码随想录训练营】【Day19休息】【Day20】第六章|二叉树|654.最大二叉树|617.合并二叉树|700.二叉搜索树中的搜索|98.验证二叉搜索树
最大二叉树 题目详细:LeetCode.654 这道题在题目几乎就说明了解题的思路了: 创建一个根节点,其值为 nums 中的最大值;递归地在最大值左边的子数组上构建左子树;递归地在最大值右边的子数组上构建右子树;…...
华为云计算之容灾技术
容灾是物理上的容错技术,不是逻辑上的容错同步远程复制:主备距离≤200km,只有在主备设备上都写成功,才会告诉主机写成功,不会丢失数据异步远程复制:主备距离>200km,只要主设备上写成…...
React系列之Redux
1 Redux概述 Redux 是 JavaScript 状态容器,提供可预测化的状态管理。Redux中文文档 Redux 和react没有必然关系,redux可以应用于各种框架,包括jquery,甚至js都可以使用redux,只不过redux和react更加搭配。redux也推…...
最简单得方法解决TCP分包粘包问题
如何用最简单的方法解决TCP传输中的分包粘包问题? 首先需要说明一点,分包粘包等等一系列的问题并不是协议本身存在的问题,而是程序员在写代码的时候,没有搞清楚数据的边界导致的。 看个简单的例子,TCP客户端不断的向服…...
免费使用通配符域名证书
文章目录前言一、手动安装acme.sh操作1、安装acme.sh2、使用dns api自动续签二、宝塔自动操作【推荐】总结前言 之前个人站点一般都是使用阿里云免费单域名证书,虽然好用但是只有一年有效,到期只能手动重新申请,并且每次弄个子域名出来就要重…...
0基础成功转行Python自动化测试工程师,年薪30W+,经验总结都在这(建议收藏)
两年前的决定我觉得还是非常正确的,就是自学了python,然后学习了自动化测试、性能测试、框架、持续集成,同时也把前面的软件测试基础知识全部补全了。目前的收入还比较满意,月入2W(仅代表个人收入),13薪&am…...
MyBaits
MyBaitsMyBaits的jar包介绍MyBaits的入门案例创建实体java日志处理框架常用的日志处理框架Log4j的日志级别Mybatis配置的完善Mybatis的日志管理使用别名alias方式一方式二SqlSession对象下的常用API查询操作Mapper动态代理Mapper 动态代理规范查询所有用户根据用户ID查询用户Ma…...
kubeadm的部署、Dashboard UI以及连接私有仓库
目录 一、kubeadm 部署 K8S 集群架构 1、环境准备 2、所有节点安装docker 3、所有节点安装kubeadm,kubelet和kubectl 3、部署K8S集群 二、dashboard 部署 1、 安装dashboard 2、使用火狐或者360浏览器访问 三 、安装Harbor私有仓库 四、 内核参数优化方案 …...
刷题记录:牛客NC20325[SDOI2009]HH的项链
传送门:牛客 题目描述: HH有一串由各种漂亮的贝壳组成的项链。 HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一 段贝壳,思考它们所表达的含义。 HH不断地收集新的贝壳,因此他的项链变得越来越长。 有一天&#…...
【REACT-路由v6】
REACT-路由v61. App.js2. 搭建路由2.1 普通写法2.2 使用useRoutes构建路由2.3 重定向封装2.4 嵌套路由中的组件Outlet3. 导航跳转3.2 声明式导航(NavLink标签)3.2 编程式导航跳转(useNavigate)3.2.1 获取参数3.2.1.1 useSearchPar…...
【离散数学】3. 代数系统
1.数理逻辑 2. 集合论 3. 代数系统 4. 图论 代数系统:把一些形式上很不相同的代数系统,用统一的方法描述、研究、推理,从而得到反映出他们共性的一些结论,在将结论运用到具体的代数系统中 系统:运算研究对象 运算&…...
深度学习常用的优化器整理
常见优化器整理 一、SGD(随机梯度下降) 公式: 经典的mini-batch SGD使用的很多,效果也比较不错,但是存在一部分问题 选择恰当的初始学习率很困难学习率调整策略受限于预先制定的调整规则相同的学习率被应用于各个参数…...
Java 内部类
文章目录1、初识内部类2、非静态内部类(实例内部类)3、静态内部类(重点)4、内部类的使用5、局部内部类6、匿名内部类1、初识内部类 如果一个事物的内部包含另一个事物,那么这是一个类的内部包含另一个类。 例如&…...
【FAQ】集成分析服务的常见问题及解决方案
常见问题一:如何验证Analytics是否上报/接入成功?以及关键日志含义是什么? 在初始化Analytics SDK前添加SDK日志开关如下: HiAnalyticsTools.enableLog (); 2.初始化SDK代码如下: HiAnalyticsInstance instance Hi…...
11.注意力机制
11.注意力机制 目录 注意力提示 查询、键和值 注意力的可视化 注意力汇聚:Nadaraya-Watson 核回归 生成数据集 非参注意力池化层 Nadaraya-Watson核回归 参数化的注意力机制 批量矩阵乘法 定义模型 训练 注意力评分函数 掩蔽softmax操作 加性注意力 缩…...
45岁当打之年再创业,剑指中国版ChatGPT,这位美团联合创始人能否圆梦?
文 BFT机器人 “即便只有一个人,我也要出发。” 这是45岁的前美团联合创始人王慧文再次冲上创业沙场的“征战”宣言,这一次他的梦想是“组队拥抱新时代,打造中国OpenAI”。 01 当打之年, AI新梦再起航 “我的人工智能宣言&…...
数据结构——第二章 线性表(2)——链式存储结构
链式存储结构1 线性表的链式存储结构1.1不带头结点的单向链表1.2 带头结点的单向链表2 单向链表的基本操作实现2.1 单向链表的初始化操作2.2 单向链表的插入操作2.3. 单链表的删除操作2.4.单向链表的更新操作2.5.单向链表的求长度操作2.6.单向链表的定位操作2.7.单向链表的遍历…...
【更新】囚生CYの备忘录(20230216~)
序言 阳历生日。今年因为年过得早的缘故,很多事情都相对提前了(比如情人节)。往年过生日的时候基本都还在家,所以一家子出去吃个饭也就罢了。今年承蒙凯爹厚爱,正好也有小半年没聚,他前天也刚正式拿到offe…...
分布式事务几种方案
1)、2PC 模式 数据库支持的 2PC【2 phase commit 二阶提交】,又叫做 XA Transactions。 MySQL 从 5.5 版本开始支持,SQL Server 2005 开始支持,Oracle 7 开始支持。 其中,XA 是一个两阶段提交协议,该协议…...
【深度评测】C盘爆满别慌!小番茄C盘清理的五大核心功能实测
1. 为什么你的C盘总是爆满? 每次打开电脑看到C盘飘红,是不是感觉血压都上来了?作为一个常年和磁盘空间斗智斗勇的老司机,我发现C盘爆满的原因远比想象中复杂。系统更新残留、软件缓存堆积、临时文件泛滥...这些"隐形杀手&quo…...
DLT Viewer实战:破解汽车电子日志分析的3大技术挑战与解决方案
DLT Viewer实战:破解汽车电子日志分析的3大技术挑战与解决方案 【免费下载链接】dlt-viewer Diagnostic Log and Trace viewing program 项目地址: https://gitcode.com/gh_mirrors/dl/dlt-viewer 在汽车电子开发领域,面对海量ECU日志数据时&…...
开始新篇章
此博客发表关于 计算机技术 等方面的文章,欢迎友好评论交流...
Unity URP描边效果:5分钟为游戏角色添加专业轮廓
Unity URP描边效果:5分钟为游戏角色添加专业轮廓 【免费下载链接】Unity-URP-Outlines A custom renderer feature for screen space outlines 项目地址: https://gitcode.com/gh_mirrors/un/Unity-URP-Outlines Unity URP Outlines 是一款专为Unity Univers…...
别再死记硬背了!用‘四体交叉’和‘双端口RAM’的实战题目,彻底搞懂计算机组成原理的存储器提速
从四体交叉到双端口RAM:用实战思维破解存储器提速难题 计算机组成原理中那些晦涩的存储器提速概念,是否总让你在题海中迷失方向?当"单体多字"、"多体并行"、"四体交叉"这些术语在教材里冰冷排列时,…...
一天一个开源项目(第63篇):lil agents - 住在 macOS Dock 上的迷你 AI 伙伴
引言 “Tiny AI companions that live on your macOS dock.” 这是「一天一个开源项目」系列的第 63 篇文章。今天介绍的项目是 lil agents(GitHub)。 很多人把 AI 编程助手放在 IDE 里(Cursor / VSCode 插件),或者放…...
Retinaface+CurricularFace与STM32的结合:边缘设备人脸识别
RetinafaceCurricularFace与STM32的结合:边缘设备人脸识别 1. 引言 想象一下这样的场景:一个智能门禁系统能够准确识别每一位住户,无需连接云端服务器,响应速度极快,而且完全保护用户隐私。或者一个工业质检设备&…...
Qwen3.5-4B-Claude-Opus实战案例:Top-P=0.9时逻辑结论一致性测试
Qwen3.5-4B-Claude-Opus实战案例:Top-P0.9时逻辑结论一致性测试 1. 模型介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个基于Qwen3.5-4B的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。该模型以GG…...
如何快速上手GSS引擎:5步实现响应式网页布局
如何快速上手GSS引擎:5步实现响应式网页布局 【免费下载链接】engine GSS engine 项目地址: https://gitcode.com/gh_mirrors/engi/engine GSS引擎是一款强大的样式表引擎,能够帮助开发者轻松创建响应式网页布局。本教程将通过5个简单步骤&#x…...
WuliArt Qwen-Image Turbo高清图展示:1024×1024下4K显示器100%缩放无模糊
WuliArt Qwen-Image Turbo高清图展示:10241024下4K显示器100%缩放无模糊 提示:本文所有展示图片均为WuliArt Qwen-Image Turbo模型直接生成,未经任何后期处理 1. 项目概述:重新定义个人GPU文生图体验 WuliArt Qwen-Image Turbo是…...
