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

【web】JDBC

项目连接数据库

右侧导航栏找到databsae

如果没有驱动,先下载驱动

填写数据库用户名密码

勾选对应的表即可

JDBC代码流程

1,配置信息

2,加载驱动   从MySQL Connector/J 5.1版本开始,推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。

3,链接数据库

4,向数据库发送SQL的对象statement:CURD

5,编写sql

6,执行查询SQL,返回一个ResultSet  结果集

7,关闭链接,释放资源  一定要做,先开的后关

代码流程如下:

public class TestIdbc {public static void main(String[] args) throws ClassNotFoundException, SQLException {//配置信息//useUnicode=ture&characterEncoding=utf-8解决中文乱码问题String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=ture&characterEncoding=utf-8";String username="root";String password="123456";//1,加载驱动   从MySQL Connector/J 5.1版本开始,推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。Class.forName("com.mysql.cj.jdbc.Driver");//2,链接数据库Connection cnno= DriverManager.getConnection(url,username,password);//3,向数据库发送SQL的对象statement:CURDStatement sta=cnno.createStatement();//4,编写sqlString sql="select * from user";//5,执行查询SQL,返回一个ResultSet  结果集ResultSet rs=sta.executeQuery(sql);//4,编写sql// String sql="update user set name='张三' where id=1";//5,执行查询SQL,返回一个int 修改的数据条数// int rs=sta.executeUpdate(sql);while (rs.next()){System.out.println("id="+rs.getObject("id"));System.out.println("name="+rs.getObject("name"));System.out.println("password="+rs.getObject("password"));System.out.println("age="+rs.getObject("age"));System.out.println("address="+rs.getObject("address"));}//6,关闭链接,释放资源  一定要做,先开的后关rs.close();sta.close();cnno.close();}

预编译sql 

public class TestIdbc2 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//配置信息//useUnicode=ture&characterEncoding=utf-8解决中文乱码问题String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=ture&characterEncoding=utf-8";String username="root";String password="123456";//1,加载驱动   从MySQL Connector/J 5.1版本开始,推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。Class.forName("com.mysql.cj.jdbc.Driver");//2,链接数据库Connection cnno= DriverManager.getConnection(url,username,password);//3,编写sqlString sql="insert into user(id,name,password,address,age,eamil) values (?,?,?,?,?,?)";//4,预编译PreparedStatement preparedStatement= cnno.prepareStatement(sql);preparedStatement.setInt(1,3);//给第一个占位符?的赋值为1preparedStatement.setString(2,"我们");//给第二一个占位符?的赋值为1preparedStatement.setString(3,"12345");preparedStatement.setString(4,"成都");preparedStatement.setString(5,"18");preparedStatement.setString(6,"11.qq.com");//5,执行sqlint i=preparedStatement.executeUpdate();if(i > 0){System.out.println("成功");}//6,关闭链接,释放资源  一定要做,先开的后关preparedStatement.close();cnno.close();}
}

JDBC事务 

 ACID原则:保证数据的安全性,要么都成功,要么都不成功

开启事务 start transaction;

事务提交 commit()

事务回滚 rollback()

关闭事务

单元测试依赖junit

    <!--单元测试  方法上加@Test即可运行测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency>

事务案例

public class TestIdbc3 {public static void main(String[] args){//配置信息//useUnicode=ture&characterEncoding=utf-8解决中文乱码问题String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=ture&characterEncoding=utf-8";String username="root";String password="123456";Connection cnno = null;try {//1,加载驱动   从MySQL Connector/J 5.1版本开始,推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。Class.forName("com.mysql.cj.jdbc.Driver");//2,链接数据库cnno= DriverManager.getConnection(url,username,password);//通知数据库开启是事务cnno.setAutoCommit(false);//3,编写sqlString sql="update account set money = money-100 where name='A'";// 执行sqlcnno.prepareStatement(sql).executeUpdate();//制造错误int i=1/0;String sql2="update account set money = money+100 where name='B'";// 执行sqlcnno.prepareStatement(sql2).executeUpdate();cnno.commit();} catch (Exception e) {try {//如果出现异常,通知数据库回滚cnno.rollback();} catch (SQLException throwables) {throwables.printStackTrace();}e.printStackTrace();}finally {//6,关闭链接,释放资源  一定要做,先开的后关try {cnno.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}
}

相关文章:

【web】JDBC

项目连接数据库 右侧导航栏找到databsae 如果没有驱动&#xff0c;先下载驱动 填写数据库用户名密码 勾选对应的表即可 JDBC代码流程 1,配置信息 2,加载驱动 从MySQL Connector/J 5.1版本开始&#xff0c;推荐使用com.mysql.cj.jdbc.Driver这个新的驱动类。 3,链接数据库…...

MATLAB代码介绍:一段轨迹的指纹定位,KNN,三维,四个锚点(附源代码,可复制粘贴)

文章目录 产品介绍:三维指纹定位 KNN MATLAB 模型概述源代码运行结果功能亮点代码结构应用场景结论产品介绍:三维指纹定位 KNN MATLAB 模型 概述 本 MATLAB 代码实现了一种基于 KNN(K-Nearest Neighbors)算法的三维指纹定位系统,利用四个基站(锚点)信号强度进行移动终…...

XML Schema 复合空元素

XML Schema 复合空元素 XML Schema 是一种用于定义 XML 文档结构和内容的语言。在 XML Schema 中&#xff0c;元素可以被定义为简单类型或复杂类型。简单类型元素不能包含其他元素或属性&#xff0c;而复杂类型元素可以包含其他元素、属性或两者都有。复合空元素是一种特殊类型…...

Java面向对象编程基础(二)

Java面向对象编程基础二 一、package与import关键字的使用1.说明2.包的作用3.JDK中主要的包4. import5.import关键字的使用 二、封装性1.为什么要封装&#xff1f;2.如何封装?3.作用4.权限修饰符的权限大小5.案例 三、构造器1 构造器的使用说明2 案例: 四、实例变量赋值过程1 …...

[PHP]重复的Notice错误信息

<?php $a []; var_dump($a[name]);执行结果&#xff1a; 原因&#xff1a; display_errors和error_reporting都打开了Notice错误信息...

2024年第四届“网鼎杯”网络安全大赛-赛前模拟训练

文章目录 网络安全&#xff08;WEB&#xff09;签到题WEB01WEB02 二进制漏洞安全&#xff08;PWN&#xff09;PWN01潜在的安全漏洞分析攻击步骤exp 逆向工程&#xff08;REVERSE&#xff09;REVERSE01代码分析重构密码 密码学&#xff08;CRYPTO&#xff09;CRYPTO01CRYPTO02 杂…...

AI金融攻防赛:YOLO理论学习及赛题进阶思路(DataWhale组队学习)

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月学习赛的AI金融攻防赛学习总结文档。本文主要讲解如何在金融场景凭证篡改检测中应用YOLO算法。我们将从模型概述、数据准备、训练流程以及模…...

Spring Security 基础配置详解(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 基本的Java知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 1. 基本知识 HttpSecurity 是 Spri…...

代码随想录打卡Day1

文章目录 day011 数组理论基础2 二分查找法3 移除元素4 平方数 day01 Java JDK是17.0.11 1 数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组下标都是从0开始的。 数组内存空间的地址是连续的。 因为数组在内存空间的地址是连续的&#xff0c;所以我们…...

Vue快速创建工程+Element Plus

创建Vue工程 执行命令 npm init vuelatest 执行这两个绿色的命令 执行这个命令启动 npm run dev Element 打开网站https://element-plus.org/zh-CN/ npm install element-plus --save 然后在vscode中打开你的项目工程 // main.ts import { createApp } from vue import Ele…...

汽车管理系统——主界面制作

目录 主界面需要有什么&#xff1f;然后要做什么&#xff1f;添加两个主菜单&#xff08;声明&#xff09;下一步应该干什么&#xff1f;能够跳转到文件有哪几个动作&#xff1f;动作如何声明&#xff1f;为什么用选择声明指针&#xff0c;不选择直接声明这个对象&#xff1f; …...

C++ 右值引用深入理解:特性、优化与底层

目录 一、左右值的概念及右值的种类 二、左值引用与右值引用 左值引用给右值取别名&#xff1a; 右值引用给左值取别名&#xff1a; 三、引用的意义及左值引用的场景 四、移动构造&#xff1a; 右值引用在底层里的实现&#xff1a; 一、左右值的概念及右值的种类 在 C …...

C# 文件操作

文章目录 文件系统FileInfo和DirectoryInfo类完成一个文件的拷贝判断一个文件是否存在FileInfo和DirectoryInfo的属性列表FileInfo和DirectoryInfo的方法列表读写文件文件系统 下面的类用于浏览文件系统和执行操作,比如移动,复制和删除文件。 System.MarshalByRefObject 这个…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发三 :安装QT5.14.2, 并将QT集成 到 VS2019中。

一&#xff0c;安装QT&#xff0c; 重点&#xff1a;在安装QT的时候要安装msvc201x版本的组件&#xff0c; 二 &#xff0c; 安装 qt-vs-tools Index of /development_releases/vsaddin/2.8.1 三&#xff0c;需要安装过 windows10 SDK&#xff0c;一般我们在安装vs2019的时候就…...

Linux 累加计算递归算法汇编实现

1...n可以使用公式计算&#xff0c;同时也是递归实现的很好例子&#xff0c;其c实现代码为 int f(int i) {i && (if(i-1));return i; } 其终止条件为0&#xff0c;此时i && &#xff08;if(i-1)&#xff09;表达式不成立&#xff0c;不计算if(i-1)直接返回0&…...

明日周刊-第23期

十月已过半&#xff0c;气温也转凉了&#xff0c;大家注意保温哦。冬吃萝卜&#xff0c;夏吃姜&#xff0c;在快要到来的冬季大家可以选择多吃点萝卜。 配图是本周末去商场抓娃娃的时候拍的照片&#xff0c;现在抓娃娃单次普遍都控制在1块钱以下了&#xff0c;还记得多年前的抓…...

kubernets(二)

集群操作 查看集群信息 kubectl get查看各组件信息 格式&#xff1a;kubectl get 资源类型 【资源名】 【选项】 events #查看集群中的所有日志信息 -o wide # 显示资源详细信息&#xff0c;包括节点、地址... -o yaml/json #将当前资源对象输出至 yaml/json 格式文…...

《YOLO 标注工具全览》

《YOLO 标注工具全览》 一、YOLO 标注工具的重要性二、常见的 YOLO 标注工具介绍&#xff08;一&#xff09;LabelImg&#xff08;二&#xff09;Yolo_Label&#xff08;三&#xff09;在线标注工具 Make Sense&#xff08;四&#xff09;Ybat - YOLO BBox Annotation Tool&…...

财富思维学习

四大象限&#xff1a; 人类财富创造史经历的五个阶段&#xff1a; 1、黄色&#xff08;土地&#xff09;财务阶段&#xff1a;拥有土地和劳动力是财富的要求 2、蓝色&#xff08;海&#xff09;财富阶段&#xff1a;谁拥有贸易的通道谁就拥有财富&#xff08;如港口&#xff…...

python爬虫加解密分析及实现

第一种&#xff1a; 1、找到加密的接口地址&#xff0c;通过加密的接口地址全局搜索 2、通过打断点的方式&#xff0c;操作页面&#xff0c;跑到断点处时&#xff0c;即可找到加密串&#xff0c;如图二&#xff1b; 3、找到用的是哪种加密方式&#xff0c;如&#xff1a; cr…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

【java面试】微服务篇

【java面试】微服务篇 一、总体框架二、Springcloud&#xff08;一&#xff09;Springcloud五大组件&#xff08;二&#xff09;服务注册和发现1、Eureka2、Nacos &#xff08;三&#xff09;负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...