JDBCD的相关应用

对比statement和preparedstatement

statement存在SQL注入问题,preparedstatement解决了SQL注入问题。

statement:存在SQL注入现象,编译一次执行一次。

preparedstatement:解决了SQL注入问题,编译一次,可执行N次,且效率更高。

preparedstatement会在编译阶段做类型的安全检查

需要SQL注入情况

由上可知,大多数情况下,使用的均是preparedstatement,但是会存在极少数的情况需要使用statement。但凡业务需求中需要进行SQL注入或者需要进行SQL语句拼接时,则需要使用statement。

/** 需要SQL注入的情况* */​import java.sql.*;import java.util.Map;import java.util.Scanner;​public class Demo03 {public static void main(String[] args) {//用户在控制台输入desc就是降序,输入asc就是升序Scanner s = new Scanner(System.in);System.out.println("输入desc就是降序,输入asc就是升序");System.out.println("请输入:");String keyWords = s.nextLine();​//执行SQLConnection conn = null;Statement stmt = null;ResultSet rs =null;​try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","333");//3.获取数据库操作对象stmt = conn.createStatement();//4.执行SQLString sql = "select ename from emp order by ename "+keyWords;rs= stmt.executeQuery(sql);//5.遍历查询结果while (rs.next()){System.out.println(rs.getString("ename"));}} catch (Exception e) {e.printStackTrace();}finally {if (rs != null){try {rs.close();}catch (SQLException e){e.printStackTrace();}}if (stmt != null){try {stmt.close();}catch (SQLException e){e.printStackTrace();}}if (conn != null){try {conn.close();}catch (SQLException e){e.printStackTrace();}}}}}

JDBC完成增删改任务

import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;​/** JDBC 完成增删改** */public class Demo04 {public static void main(String[] args) {Connection conn = null;PreparedStatement ps =null;try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接// conn = DriverManager.getConnection("jdbc:mysql//localhost:3306/bjpowernode","root","333");注意URL的书写格式conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","333");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","333");​//3.获取数据库操作对象,写SQL语句//增//            String sql = "insert into dept (deptno,dname,loc) values(?,?,?)";//            ps = conn.prepareStatement(sql);//            ps.setInt(1,70);//            ps.setString(2,"销售部");//            ps.setString(3,"西安");​//改//            String sql = "update dept set dname= ?,loc = ? where deptno = ?";//            ps = conn.prepareStatement(sql);//            ps.setString(1,"研发一部");//            ps.setString(2,"汉中");//            ps.setInt(3,60);​//删String sql = "delete from dept where deptno = ?";ps = conn.prepareStatement(sql);ps.setInt(1,70);​//4.执行SQL语句int count = ps.executeUpdate();System.out.println(count);//5.遍历查询结果集//            while ()​} catch (Exception e) {e.printStackTrace();}finally {if (ps !=null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}}}if(conn !=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}​​}​​}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习AI-相关路程-工具使用-NVIDIA SDK MANAGER==NVIDIA-jetson刷机工具安装使用 】

【学习AI-相关路程-工具使用-NVIDIA SDK manager-NVIDIA-jetson刷机工具安装使用 】 1、前言2、环境配置3、知识点了解(1)jetson 系列硬件了解(2)以下大致罗列jetson系列1. Jetson Nano2. Jetson TX23. Jetson Xavier NX4. Jetson…

Hadoop之路---hive安装与配置

上文我们说完了hadoop的安装配置全流程,现在让我们来安装一下hive,他是基于hadoop的数据仓库,实质即为一个将MR任务封装为易于编写的hql语句(类似于sql语句)的组件。安装hive的前提是你要先安装jdk,hadoop,mysql。下面我们还是在w…

YouTube广告全教学:形式、投放步骤与技巧(2024年更新)

YouTube作为全球最大的视频分享和观看平台吸引了大量的观众,这一平台以其无与伦比的用户参与度和覆盖范围,重新定义了人们获取与分享知识的方式,同时也为企业开辟了一片前所未有的营销蓝海。 据统计,全球观众平均每天观看 YouTub…

超疏水TiO₂纳米纤维网膜的良好性能

超疏水TiO₂纳米纤维网膜是一种具有特殊性能的材料,它结合了TiO₂的光催化性能和超疏水表面的自清洁、防腐、防污等特性。这种材料在防水、自清洁、油水分离等领域具有广阔的应用前景。 制备超疏水TiO₂纳米纤维网膜的过程中,通过精确控制纺丝溶液的成分…

揭秘前端开发的“薪”机遇

众所周知,华为开发者大会2023,宣布不再兼容安卓,同时宣布了“鸿飞计划”,欲与iOS、安卓在市场三分天下,这对中国国产操作系统而言,具有划时代的意义。 最近有不少前端的开发者来咨询鸿蒙开发,今…

OpenNJet : 下一代云原生应用引擎

本心、输入输出、结果 文章目录 OpenNJet : 下一代云原生应用引擎前言OpenNJet 技术架构安装 OpenNJet为什么有了 OpenNJetOpenNJet 和 NGINX 是什么关系什么是云原生应用引擎?OpenNJet 的有哪些优势OpenNJet 的有哪些优势 OpenNJet 与国产化OpenNJet 使…

Llama 3 超级课堂

https://github.com/SmartFlowAI/Llama3-Tutorial/tree/main 第一节作业 streamlit run web_demo.py /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct

一键静音,iPhone勿扰模式助你远离干扰

在现代社会的快节奏生活中,我们时常被各种各样的通知、铃声和提示音所打扰,无法专注地工作或享受宁静的时光。而iPhone的勿扰模式功能,就像是一位贴心的助手,能够一键帮你屏蔽这些干扰,让你在需要的时候拥有一个清静的…

窃鈇逃债,赧然惭愧——“天下共主”周赧王的结局

引子,债台高筑 周赧王五十九年(前256年),雒邑王都内,大周第三十七代天子、年近八十的周赧王姬延困坐在王宫内的高台上,愁容满面、沮丧悲切、束手无策;而王宫宫墙外不远处,是一大帮举…

流畅的python-学习笔记_设计模式+装饰器+闭包

策略模式 类继承abc.ABC即实现抽象类,方法可用abc.abstractmethod装饰,表明为抽象方法 装饰器基础 装饰器实际是语法糖,被装饰的函数实际是装饰器内部返回函数的引用 缺点:装饰器函数覆盖了被装饰函数的__name__和__doc__属性…

暗区突围pc版steam叫什么 暗区突围无限steam怎么搜

暗区突围pc版steam叫什么 暗区突围无限steam怎么搜 最近游戏圈热度最高的事件肯定是暗区突围PC版本的上线,在上线之前就惹得各位游戏爱好者们频频侧目,在正式上线之后更是吸引了大批的新玩家老玩家进行游戏。可是许多玩家发现在steam上找不到游戏&…

视频改字祝福/豪车装X系统源码/小程序uniapp前端源码

uniapp视频改字祝福小程序源码,全开源。创意无限!AI视频改字祝福,豪车装X系统源码开源,打造个性化祝福视频不再难! 想要为你的朋友或家人送上一份特别的祝福,让他们感受到你的真诚与关怀吗?现在…

【Python深度学习(第二版)(1)】什么是深度学习,深度学习与机器学习的区别、深度学习基本原理,深度学习的进展和未来

文章目录 一. 深度学习概念二. 深度学习与机器学习的区别三. 理解深度学习的工作原理1. 每层的转换进行权重参数化2. 怎么衡量神经网络的质量3. 怎么减小损失值 四. 深度学习已取得的进展五. 人工智能的未来 - 不要太过焦虑跟不上 一. 深度学习概念 先放一张图来理解下人工智能…

618必买好物清单来袭,这些数码产品值得你考虑!

是不是很多朋友和我一样,已经迫不及待地为618好物节做好了准备,准备开启一场购物盛宴!作为一名资深家居与数码爱好者,每年618好物节时我都会尽情挑选心仪的物品,因此今天我想和大家分享一下我的618购物清单&#xff0c…

智慧校园气象站有哪些优点

TH-XQ4智慧校园气象站具有多种优点,这些优点不仅提升了校园的气象监测能力,还为师生提供了更便捷、准确的气象服务。以下是智慧校园气象站的主要优点: 实时监测与预警:智慧校园气象站能够实时监测校园内的气象参数,如温…

计算机学报模板: \begin{multicols}{2}的情况下不显示\begin{table}

计算机学报模板 \vspace{1em} \hspace*{-0.8cm} \begin{minipage}{\columnwidth} \centering \captionsetup{labelformat=simple}

90% 的企业攻击始于钓鱼邮件

近日,安全人员研究表明,过去30天,62% 的恶意文件通过电子邮件进行传播,其中 PDF 是最常见的格式,占比 59%。 电子邮件是重要的通信方式之一。 根据 Statista 的数据,2022 年电子邮件用户数量超过了 42.6 …

Java--方法的使用

1.1什么是方法 方法顾名思义就是解决问题的办法,在程序员写代码的时候,会遇到很多逻辑结构一样,解决相同问题时,每次都写一样的代码,这会使代码看起来比较绒余,代码量也比较多,为了解决这个问题…

Rust:foo(x)、foo(x),还是foo(x.clone())?

一、一个实际问题 用一个线性代数库的求逆矩阵函数时,让我很不爽,我必须按照下面的形式写调用代码: ...if let Some(inv_mat) try_inverse(mat.clone()) {...}...注意 try_inverse 函数的参数传递形式,函数参数是 mat.clone() 而…

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层:中继器,集线器(多路中继器) 数据链路层:网桥,交换机(多端口…