JDBC 수정 및 삭제 작업 실현

5334 단어 JDBC
도구: Myeclipse (Eclipse): 지식 포인트: SQL 주입 공격 과 JDBC 의 수정 / 삭제 작업 jar 패키지: comons - collections 4 - 4.0. jar comons - dbcp - 1.4. jar comons - pool - 1.6. jar Oracle 11g 11.2.0.1.0 JDBCojdbc 6. jar 코드 는 모두 자신 이 쓴 연결 풀 기술 을 바탕 으로 url 을 공유 한 적 이 있 습 니 다.http://blog.csdn.net/coder_hello_World / article / details / 78515974 수정 작업: 예 를 들 어 실제 생활 에서 의 일부 수정 암호 작업 은 사용자 가 사용자 민 과 비밀 번 호 를 입력 하여 정확하게 검증 한 후에 사용자 가 입력 한 수정 정 보 를 수정 하 는 것 입 니 다. 업무 코드 의 사상 에 따라 사용자 이름 은 변경 할 수 없습니다. 일반적으로 표 의 메 인 키 가 유일 하고 중복 삭제 작업 을 하지 않 습 니 다. 사용자 가 입력 한 정보 가 정확 한 후에사용자 의 삭제 작업 을 시작 합 니 다. 왜 Prepared Statement 대상 을 사용 하여 주입 도 구 를 방지 합 니까?1. 사용자 의 계 정 정보 안전 을 보호 하 는 것 은 어떻게 방지 합 니까?Prepare Statement 은 사전 컴 파일 을 사용 합 니 다. SQL 문 구 를 다 썼 을 때 데이터 베 이 스 는 실행 계획 이 생 겼 습 니 다. Prepare Statement 은 익명 의 값 을 직접 복사 합 니 다. 입력 한 것 을 외부 에서 볼 수 없 으 면 문자열 로 처리 합 니 다. main 함수 {test 1 (i, j * 5) 을 연결 하지 않 습 니 다.; / / 여기 사용자 가 입력 할 때 값 을 수정 할 수 있 습 니 다. 데이터 에 해 를 끼 칩 니 다 test 2 (??); / / 무엇 을 입력 해 야 할 지 모 르 겠 습 니 다. 데 이 터 를 수정 할 수 없습니다...} Public static void test 1 (int i, int j) {} Public static void test 2 (?) {} 전 통 된 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();
		}
	}
}
 

 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기