JDBC实现修改和删除操作

【SAM2系列】windows单GPU复现时的bug解决记录 windows运行sam2,就感觉在开一艘破破烂烂的船,每走一步报一个错,bug源源不断的冒出来😭😭😭😭😭。 阅读详情

工具:Myeclipse(Eclipse):
知识点:如何防止SQL注入攻击和JDBC中的修改/删除操作
jar包:
commons-collections4-4.0.jar
commons-dbcp-1.4.jar
commons-pool-1.6.jar
Oracle 11g 11.2.0.1.0 JDBC_ojdbc6.jar

代码都是基于自己写的连接池技术,,已经分享过了
url:http://blog.youkuaiyun.com/coder_hello_world/article/details/78515974

修改操作:
好比现实生活中的一些修改密码操作
是让用户输入用户民和密码验证正确之后
就开始修改用户输入的修改信息
按照业务代码的思想,用户名是不能更改,一般作为表的主键唯一且不重复

删除操作:
用户输入的信息正确之后,就开始实现用户的删除操作


为何使用PreparedStatement对象防止注入工具?
1.保护用户的账号信息安全

是如何进行防止的?
PrepareStatement是采用的预编译.
在我们写好SQL语句的时候,数据库就已经产生了执行计划

PrepareStatement是直接对匿名的值进行复制,外界看不到输入什么
输入的东西都会作为字符串处理..不会进行拼接

main函数{
test1(i,j*5);//这里用户输入的时候可以进行值的修改.对数据产生危害
test2(?,?);//不知道输入什么..无法对数据进行修改...
}

public static void test1(int i ,int j){

}

public static void test2(?,?){

}

而传统的Statement并不是没有作用,如果不进行动态增删改查数据数,就可以使用Statement对象

比如查询一张表中所有的数据,,就可以使用Statement对象

 

 

 

package com.csdn.jdbcdemo.date2017_11_16;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Scanner;

import com.csdn.jdbcdemo.date2017_11_12.BasicDataSourceDemo;

/**
 * 
 *实现修改...删除...  --->操作
 *
 * @author 89155
 *
 */
public class User_SELECT_UPDATE_DELETE_TRANSFER {
	public static void main(String[] args) {
		System.out.println("1.修改       2.删除     3.退出");
		System.out.println("请输入选项");
		Scanner scanner
			= new Scanner(System.in);
		String options
			= scanner.next();
		if(options.matches("[1-5]{1}".toLowerCase())){
			int options2 = Integer.parseInt(options);
			switch(options2){
			case 1:
				//修改
				Updata(scanner);
				break;
			case 2:
				//删除
				delete(scanner);
				break;
			default :
				System.out.println("结果操作.退出程序!");
				System.exit(-1);
			}
		}else{
			System.out.println("输入有误!请重新输入!");
		} 
	}

	//删除操作
	private static void delete(Scanner scanner) {
		System.out.println("输入你的用户名:");
		String username = scanner.next();
		System.out.println("输入你的密码:");
		String password = scanner.next();
		try{
			//连接
			Connection connection
				= BasicDataSourceDemo.getConnection();
			String selectSql = "SELECT * FROM USER_INFODEMO"
					+ " WHERE"
					+ " LOWER(USERNAME) = LOWER(?)"
					+ " AND"
					+ " LOWER(PASSWORD) = LOWER(?)";
			//使用PreparedStatement对象
			PreparedStatement pstate
				= connection.prepareStatement(selectSql);
			pstate.setString(1, username);
			pstate.setString(2, password);
			//查看输入的信息是否正确
			if(pstate.executeQuery().next()){
				//确定是否删除
				System.out.println("确定删除此用户 (N/Y)");
				String next = scanner.next();
				if(next.equalsIgnoreCase("y")){
					//删除用户操作
					String deleteSql = "DELETE FROM USER_INFODEMO"
						+ " WHERE "
						+ "LOWER(USERNAME) = LOWER(?)";
				PreparedStatement pstate2
					= connection.prepareStatement(deleteSql);
				pstate2.setString(1, username);
					if(pstate2.executeUpdate()>0){
						System.out.println("删除成功!");
					}else{
						System.out.println("删除失败!");
					}
					
				}else{
					pstate.close();
					System.out.println("取消用户的删除操作!");
					System.exit(-1);
				}
			}else{
				System.out.println("输入的用户名和密码不正确!"
						+ "无法进行删除操作.");
			}
			pstate.close();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			BasicDataSourceDemo.closeConnection();
		}
	}

	//修改
	private static void Updata(Scanner scanner) {
		System.out.println("输入你的用户名:");
		String username = scanner.next();
		System.out.println("输入你的密码:");
		String password = scanner.next();
		System.out.println("输入你要修改的密码:");
		String updatePassword = scanner.next();
		try{
			
			//连接
			Connection connection
				= BasicDataSourceDemo.getConnection();
			String selectSql = "SELECT * FROM USER_INFODEMO"
					+ " WHERE"
					+ " LOWER(USERNAME) = LOWER(?)"
					+ " AND"
					+ " LOWER(PASSWORD) = LOWER(?)";
			//使用preparedStatement对象防止SQL注入式攻击
			PreparedStatement pstate 
				= connection.prepareStatement(selectSql);
			
			pstate.setString(1, username);
			pstate.setString(2, password);
			if(pstate.executeQuery().next()){
				String updateSql = "UPDATE USER_INFODEMO"
						+ " SET"
						+ " PASSWORD = ?"
						+ " WHERE"
						+ " LOWER(USERNAME) = LOWER(?)";
				PreparedStatement pstate2
				= connection.prepareStatement(updateSql);
				pstate2.setString(1, updatePassword);
				pstate2.setString(2, username);
				if(pstate2.executeUpdate()>0){
					System.out.println("修改成功!");
				}else{
					System.out.println("修改失败!");
				}
			}else{
				System.out.println("账号或者密码输入有误!");
			}
			pstate.close();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			BasicDataSourceDemo.closeConnection();
		}
	}
}

 

 

 

 

 

 

 

 

 

英伟达 Jetson AGX Thor 官方入门教程(二)CUDA、Docker、JetPack 设置 本文详细介绍了NVIDIA Jetson AGX Thor开发套件的安装与配置流程。主要内容包括:1) BSP安装的三种方法(Jetson ISO、SDK Manager和Linux刷写脚本)及其适用场景;2) Docker环境的完整配置步骤及测试方法;3) CUDA工具包的两种安装方式(容器化和原生安装)及其性能对比;4) JetPack SDK的安装选项。文章提供了详细的命令行操作指南和故障排除建议,帮助开发者快速搭建AI开发环境,充分发挥Jetson平台的硬件性能优势。 阅读详情

相关推荐

为什么你的XGBoost多分类效果不如预期?可能是这5个参数没调对

本文深度剖析了XGBoost模型在处理多分类问题时效果不佳的五大关键参数陷阱。针对多分类问题的独特性,文章提供了max_depth、learning_rate、采样参数及正则化参数等核心参数的量化调整策略与诊断方法,帮助开发者精准调优,有效提升模型在各类别上的均衡性能与泛化能力。

weixin_29182481的博客 295

使用JDBC对数据库进行增删改查操作

使用JDBC对数据库进行增删改查操作

m0_65068333的博客 2649

eNSP常见故障处理

eNSP无法启动设备一直停在#井号的问题的解决方案?

lvshiliang123的博客 2万+

JDBC操作数据库实现增、删、查、改

实际开发中,手动的输入SQL语句是少之又少,大多数情况下是通过编译代码进行来控制自动执行.具体操作如下:上述展示有一个【自己写的Mysql客户端】,这种操作是非常容易的,因为各种数据库本身就提供一系列的API,可以让用户很方便的实现这个客户端。**显然MySQl提供的有(Application Programming Interface )Java也提供了一些API 这些API 提供了一些类和方法,通过这些类和方法可以进行一系列操作,比如操作硬盘的文件,进行增删查改,操作数据库等 **。

Original0的博客 1353

28_Spring AI 干货笔记之 OpenAI 聊天功能

本文详细介绍了在Spring AI框架中集成OpenAI聊天模型的方法。内容涵盖API密钥配置、通过starter依赖启用自动配置、连接与模型参数的详细设置,并重点说明了运行时选项的动态覆盖机制。文章还深入讲解了多模态处理(图像与音频)、结构化输出、函数调用等高级功能,提供了示例控制器和手动配置指南,并讨论了与OpenAI兼容服务器的适配与推理模型思维链的获取。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 1655

YOLOv11的对比学习预训练改进-(通过SimCLR预训练增强特征提取)

本文介绍了将SimCLR对比学习预训练与YOLOv11目标检测模型相结合的创新方法。文章首先概述了目标检测领域的发展现状和YOLOv11的架构优化,包括主干网络、特征金字塔和检测头的改进设计。其次详细解析了SimCLR对比学习的核心原理,涵盖数据增强、投影头设计和NT-Xent损失函数。最后探讨了如何将对比学习与目标检测有效结合,通过特征空间对齐和渐进式微调策略提升模型性能。该方法显著增强了特征提取能力,提高了检测精度和训练效率,特别是在小目标和遮挡目标的检测上表现突出。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 685

JDBC编程对数据库实现插入删除修改查找等操作

JDBC编程六大步骤,及如何利用JDBC编程实现对数据库进行增删查改等操作

Biteht的博客 2008

不会精准对比前人研究写“讨论与对比”段落?教你用ChatGPT辅助,直接让这部分提升一个档次(附提示词指令)

一个我觉得很有效的做法是,选取几篇具有代表性的文献,从研究方法、变量设置或结论方面进行对照分析,并指出本研究在哪些方面进行了补充或修正。除了简单说“提出了新的方法”或“首次应用某模型”,更需要说明这一做法在结果解读、研究设计或理论拓展上的具体意义,最好能够与现有研究进行比较,形成明确的差异化描述。段落应包含:研究结果解释、与前人研究对比、研究贡献、局限性反思,并在结尾提出未来研究的可能方向。讨论与对比部分一般位于文献综述、研究讨论或结果分析的后面,目的是对比已有研究,突出自己研究的价值与新意。

智能AI让学术科研更容易 170

JDBC连接数据库实现删除功能

这次同样运用之前写过的部分代码进行改变,实现一个删除功能,这个功能很好添加,表单中只要form一个参数到DeleteServlet中,所以重点的代码还是在DeleteServlet中实现业务逻辑。   我们运用到的SQL语句是.  String sql = "delete from tb_book where id=?";   所以需要表单form的时候要传进一个id值。然后我们根据id

会飞的小祥 2278

反应动力学仿真软件:Kintecus_(12).高级功能与技巧

Kintecus允许用户自定义复杂的反应方程,包括非线性反应和多相反应。通过自定义反应方程,用户可以更准确地描述实际反应系统。多尺度仿真是指在同一模型中同时考虑不同时间和空间尺度的反应过程。Kintecus提供了工具来处理从微观分子动力学到宏观反应动力学的多尺度仿真。通过本节的学习,您已经掌握了Kintecus的高级功能与技巧,包括复杂反应网络的构建、参数优化与敏感性分析、自定义反应机制、多尺度仿真、并行计算与批处理,以及数据可视化与后处理。

kkchenjj的博客 1047

2026年CSP-J初赛真题及答案解析

2026年CSP-J初赛真题及题解

王老师青少年编程 1616

JDBC实现数据的删除

Demo:根据编号删除一条数据 /** * 根据编号删除一条数据 */ public static int deleteEmpByEmpno(int empno){ //获取数据库连接 con = getConnection(); //准备SQL语句 String sql ="DELETE FROM emp WHERE empno=?"; try { //获取...

JustinNeil的博客 3664

apt-get update时出现GPG error:... bionic InRelease:The following signatures were invalid: EXPKEYS解决方案

本文主要介绍了apt-get update时出现W: GPG error: … bionic InRelease: The following signatures were invalid: EXPKEYSIG B7B3B788A8D3785C MySQL Release Engineering E: The repository ‘… bionic InRelease’ is not signed.解决方案,希望能对使用Ubuntu系统的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

JDBC操作数据库实现增加、删除、修改以及批处理和连接信息文件properties

JDBC操作数据库 一、在数据库中建库建表 二、编写程序 创建mysql包,存放DB_Helper类,用来连接数据库 创建Entity包,存放Emp类,作为用户的实体类 创建Dao包,存放EmpDao接口,用来定义方法 创建Dao_Impl包,存放接口的实现类EmpDaoImpl 创 Test包,存放 Test测试类 具体JDBC简介、架构以及详细的方法可以参考上一篇博客JDBC操作数据库 1.添加数据库信息: (1)接口EmpDao 定义方法: // 添加数据库信息 publ

weixin_45686583的博客 594

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

详述JDBC中修改(添加删除修改)功能的实现过程(二)

1、需要先数据库中创建一个表 这里使用我在“详述JDBC中查询功能的实现过程(一)”创建的表格 use test; //使用test数据库 create table user_info( /*在test数据库中创建一张表,名字是user_info,表中设置id,name和password字段*/ id char(3), //创建一个char类型的名为id的字段,并且规定其字符串长度固定为3 ...

CandidBoy的博客 971

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

六、jdbc修改和删除操作

jdbc修改和删除操作 在抽取工具类的前提下 代码展示: 修改: // 修改 @Test public void f4() { // 连接 Connection conn = null; // 语句执行者 PreparedStatement st = null; // 结果集 ResultSet rs = null; // 获取连接 try { conn = jdbcutils2.getC...

Those who achieve great thing do not stick to trifles 896

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java通过JDBC连接数据库及增删改查操作

1.实战数据库数据的准备    创建数据库(newsmanager),然后创建表news(id,title,content,type)和newstype(id,name),其中news的type和newstype的id为主外键关系,如下图图   2.JDBC的介绍       1)一种执行SQL语言的Java API       2)可以对所以主流数据库进行统一访问(access,

我是李香兰小朋友的博客 5万+

JDBC操作

1.修改(增,删,改);

weixin_62707591的博客 2136

Java Web开发实战:使用Servlet和JDBC实现商品增删改查(炒鸡详细)

如果前端需要查询商品信息,我们可以通过JDBC连接到MySQL数据库,并查询商品表中的数据,然后将查询结果返回给前端。在Servlet中,我们需要获取前端传递过来的参数,并调用相应的JDBC操作来完成增删改查的功能。例如,如果前端需要查询商品信息,我们可以通过JDBC连接到MySQL数据库,并查询商品表中的数据,然后将查询结果返回给前端。接下来,我们需要创建一个商品管理系统的数据库,并在其中创建一个商品表,包括商品ID、商品名称、商品价格和商品数量等字段。首先,我们需要创建一个操作数据库的jdbc类。

m0_67700096的博客 2576

JDBC增删改、模糊查询

JDBC的增加、删除、模糊查询

leikunheng0625的博客 337

jdbc案例

07-jdbc案例-需求介绍和数据准备 08-jdbc案例-需求一查询所有学生信息 09-jdbc案例-需求二根据id查询学生信息 10-jdbc案例-需求三添加学生信息 11-jdbc案例-需求四修改学生信息 12-jdbc案例-需求五删除学生信息 1.数据准备 数据库和数据表 -- 创建db14数据库 CREATE DATABASE db14; -- 使用db14数据库 USE db14; -- 创建student表 CREATE TABLE student( sid INT PRIMARY

Major_S的博客 3262

【MySQL】MySQL中JDBC编程——MySQL驱动包安装——(超详解)

本期讲解了关于如何在JAVA中配置JDBC编程环境,和JAVA和MySQL数据库建立联系,JDBC编程的固定套路,最后通过数据库和idea的代码展示了如何操作表的增删查改~~~

GGBond778的博客 7001

JAVA学习---使用JDBC连接数据库

1. JDBC基础 1.1 JDBC简介 Java语言中连接数据库的应用程序接口。 4种方式: JDBC-ODBC桥---开发数据库互联(MS组件) 本地API驱动---需要本地数据库的驱动代码 网络协议驱动---采用中间层传递数据,执行效率较慢 本地协议驱动---需有针对驱动程序,执行效率较高(最常用) 1.2 JDBC常用类和接口 常用类有:DriverManage...

dejeya2381的博客 130

透过JDBC修改资料

假设有一资料表名称叫people,其栏位结构及资料内容如下 id(栏位型态varchar) name(栏位型态varchar) salary(栏位型态int) 001 王小明 30000 002 陈永年 35000 003 王新国 28000已经建立好一个Connection con 一、利用SQL语法新增修改删除资料 1.新增一笔资料 新增一笔编号004,姓名刘少奇,薪水31000

!Java 2939

JDBC Template概述和准备工作

1. JDBC Template(概念和准备工作) 什么是JDBC Template? Spring 框架对JDBC进行封装, 使用JDBC Template方便实现对数据库的操作 准备工作: 在Spring配置文件中配置数据库连接池: <!-- DruidDataSource dataSource = new DruidDataSource();--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataS

weixin_51334343的博客 245

利用JDBC实现学生管理系统

New Project(利用JDBC实现学生管理系统)Main.java——(学生管理系统代码实现)1、添加学生信息2、修改学生信息3、查询学生信息4、删除学生信息总成DBLink数据库连接select()(查询)update()(添加,修改,删除)exist()(检验学生是否存在)IRowMapper接口DBLink总成 Main.java——(学生管理系统代码实现) 1、添加学生信息 Scanner scanner = new Scanner(System.in); int option = sc

深海潜蛟的博客 2548
上一篇: java5的新特性fore和可变参数
下一篇: 使用JDBC实现查询和转账操作
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值