준비된 문을 사용하여 일부 값을 내 테이블에 저장해야합니다.자동 증분을 사용하여 데이터베이스에 삽입
내 테이블에 ID라는 열이 있으며 자동 증가로 설정됩니다. 이 열에 대해서는 사용자가 입력 할 필요가 없습니다.
다른 값은 모두 사용자가 가져옵니다.
편집 : 2 개의 ID가 있습니다. 하나는 사용자로부터, 다른 하나는 데이터베이스에서 자동으로 생성됩니다. 데이터베이스에 의해 자동으로 생성 된 것이 기본 키입니다.
내가이 일을 제대로하고 있습니까?
감사합니다.
준비 진술 :
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_details`(IN id varchar(45),IN username varchar(45),IN name varchar(45))
BEGIN insert into details (id,username,name) values (id ,username,name);
END
코드 : MySQL은 당신을 위해이 값을 설정합니다과 같이 간단하게 준비된 문에서 자동으로 생성 된 필드를 생략 할 수 있습니다
PreparedStatement preparedStatement = connect.prepareStatement("CALL INSERT_DETAILS(?,?,?)");
preparedStatement.setLong(1, userID);
preparedStatement.setString(2, username);
preparedStatement.setString(3, name);
preparedStatement .executeUpdate();
여기에 저장 프로 시저를 사용해야하는 이유가 있습니까? 당신은 단순히'connect.prepareStatement ("INSERT INTO details (id, username, name) VALUES (?,?,?)"); –
예, 저장 프로 시저가 더 안전하지는 않습니까? – user3702643
아닙니다. 이 경우 준비된 문을 사용하여 입력 데이터를 삭제하고 주입 공격을 방지하여 보안을 제공합니다. 저장 프로시 저는 일반적으로 여러 클라이언트가 사용할 수있는 논리를 통합하기 위해 예약되어 있습니다. –