JDBC 删除数据两种方式,PreparedStatement表示预编译的 SQL 语句的对象,防止sql注入

1.statement使用的不方便
 2.sql注入的问题
 *  在SQL语句中使用了系统自带的关键字 or and ,让where条件判断失效
 *
  prepareStatement:
 *  1.sql语句不用在拼字符串
 *  2.防止sql注入问题

 1 public class CURDTest {
 2     public static void main(String[] args) throws Exception {
 3         //insertTest();
 4         //deleteTest();
 5         //updateTest();
 6         //selectTest();
 7         deleteTest2();
 8     }
 9     //删除  方式2:获取预编译语句对象
10     //PreparedStatement
11     //防止sql注入问题
12     private static void deleteTest2() throws Exception {
13         //注册驱动
14         Class.forName("com.mysql.jdbc.Driver");
15         //创建连接
16         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/day01", "root", "root");
17         //创建Statement对象
18         String sql = "delete  from stu where id =? or name =?";
19         PreparedStatement pst = conn.prepareStatement(sql);
20         pst.setInt(1,7);//(第1个?,?的内容id=6)
21         pst.setString(2, "宝贝");//(第2个?,?的内容name ="宝贝")
22         //
23         int i = pst.executeUpdate();
24         if(i!=0) {
25             System.out.println("删除成功");
26         }
27         pst.close();
28         conn.close();
29     }
30
31     //删除
32     private static void deleteTest() throws Exception {
33         // TODO Auto-generated method stub
34         //注册驱动
35         Class.forName("com.mysql.jdbc.Driver");
36         //创建连接
37         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/day01", "root", "root");
38         //创建Statement对象
39         Statement st = conn.createStatement();
40         //  sql注入的问题
41         //     在SQL语句中使用了系统自带的关键字 or and ,让where条件判断失效
42         //String sql = "delete from stu where id= 1 or 1=1";//SQL注入问题,会把整张表的内容删除
43         String sql = "delete from stu where id= 1";
44         int i = st.executeUpdate(sql);
45         if (i!=0) {
46             System.out.println("删除成功");
47         }
48         st.close();
49         conn.close();
50     }
51 }

PreparedStatement表示预编译的 SQL 语句的对象,防止SQL注入

原文地址:https://www.cnblogs.com/star521/p/9011511.html

时间: 2024-10-12 16:06:40

JDBC 删除数据两种方式,PreparedStatement表示预编译的 SQL 语句的对象,防止sql注入的相关文章

Mock服务端:客户端Get请求,返回json数据两种方式

Mock服务端:客户端Get请求,返回json数据两种方式:1,直接在response中返回json数据 2,通过json文件返回: 准备工作: wiremock-body-transformer-1.1.6.jar wiremock-standalone-2.14.0.jar 安装java运行环境(jdk等) 一,直接在response中返回: 说明: mappings : 对应请求request位置 __files : 对应响应reponse位置 mappings中增减文件:get.json

对Java代码加密的两种方式,防止反编译

使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的java.exe,并且可以实现项目源码绑定制定设备,防止部署到客户服务器的项目被整体拷贝. 两种加密方式 War 包加密 当你的项目在没有完成竣工的时候,不适合使用 war 文件,因为你的类会由于调试之类的经常改,这样来回删除.创建 war 文件很不爽,最好是你的项目已经完成了,不改了,那么就打个 w

JDBC java数据连接 读取properties 数据库连接池 预编译

1.创建连接,下载MySQL驱动(JDBC接口的实现类,就是一个jar包) public class Demo01 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1. 注册驱动 告诉虚拟机使用的是哪个数据库软件 Class.forName("com.mysql.jdbc.Driver"); //2. 获取连接对象 Connection conn = Dri

Hibernate批量删除的两种方式

第一种:使用Hibernate映射类对对象进行封装操作 --------------------------------------------------------------------------- @Override    public boolean deleteTrainee(long[] id) {        try {            Session session = HibernateSessionFactory.getSession();            

sqlserver导出数据两种方式:1.导出数据脚本 2.备份数据库

1.直接导出数据表结构及表中数据 2.直接备份数据库 备份之后,再还原就行. 原文地址:https://www.cnblogs.com/newcapecjmc/p/12545464.html

Json传递数据两种方式

@PostMapping(value = "/list") @ResponseBody public void invoiceDetail2(String ids) { JSONObject jsonobject = JSONObject.parseObject(ids); JSONArray jsonArray = JSONArray.parseArray(jsonobject.get("list1").toString()); List<String>

开启线程的两种方式,

'''目录1,开启线程的两种方式*****2,线程和进程的区别*****3,线程对象的其他方法和属性4,守护线程5,互斥锁6,死锁现象与递过锁7,信号量'''#1 开启线程的两种方式import timefrom threading import Thread def dask(name): print('%s is running '%name) time.sleep(1) print('%s is done'%name) t=Thread(target=dask,args=('egon',)

网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2次. >强烈依赖数据库的驱动jar 解决办法: Class.forName("com.mysql.jdbc.Driver"); 1.1.2 API详解:java.sql.Statement接口: 操作sql语句,并返回相应结果 String sql = "某SQL语句&qu

关于Mysql删除表数据的两种方式对比

1.delete from table_name 一行一行删除,只删除表数据,auto_increament仍停留在最后一天数据的下一个值. 2.truncate table_name 快捷删除表数据.先删除整个表,然后重新建表结构.auto_increament从1开始. 关于Mysql删除表数据的两种方式对比,布布扣,bubuko.com