JDBC实现修改和删除操作

xiaoxiao2021-02-28  12

工具: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.csdn.net/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(); } } }  

 

 

 

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-1749988.html

最新回复(0)