当前位置: 首页 > 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…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

大数据驱动企业决策智能化的路径与实践

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;数据驱动的企业竞争力重构 在这个瞬息万变的商业时代&#xff0c;“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...

第22节 Node.js JXcore 打包

Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本&#xff0c;基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...

【仿生机器人】刀剑神域——爱丽丝苏醒计划,需求文档

仿生机器人"爱丽丝"系统架构设计需求文档 一、硬件基础 已完成头部和颈部硬件搭建 25个舵机驱动表情系统 颈部旋转功能 眼部摄像头&#xff08;视觉输入&#xff09; 麦克风阵列&#xff08;听觉输入&#xff09; 颈部发声装置&#xff08;语音输出&#xff09…...