반응형
Java PreparedStatement 마지막으로 삽입한 상태
이런 식으로 진행된 이 질문에 대한 이 답변은 인터넷에서 찾기가 매우 어려울 것 같습니다.기본적으로 PreparedStatement를 사용하여 MySQL 데이터베이스에 값을 삽입하고 있습니다.SQL 주입 공격을 방지하기 위해 데이터를 탈출하기 위해 준비된 상태를 사용합니다.문제는 이제 그 열쇠들을 회수할 방법이 생겼다는 것입니다.
String query="Insert INTO Table_A(name, age) (?, ?)";
//String query="Insert INTO Table_A(name, age) ('abc','123' )";//Doesn't escape
PreparedStatement prest;
prest = con.prepareStatement(query);
prest.setString(1,"abc");
prest.setInt(2,123);
prest.executeUpdate();
//prest.executeUpdate(query, PreparedStatement.RETURN_GENERATED_KEYS); Throws an error
//prest.executeQuery(); Throws an error
그러면 입력을 회피하고 Java에서 준비된 문을 사용하려면 어떻게 해야 합니까?
통과하다Statement.RETURN_GENERATED_KEYS
인에prepareStatement()
문의 사항과 함께그런 다음 getGeneratedKeys()를 사용합니다.PreparedStatement
삽입된 auto_incremented_id가 포함된 ResultSet을 가져옵니다.
String query="Insert INTO Table_A(name, age) (?, ?)";
//String query="Insert INTO Table_A(name, age) ('abc','123' )";//Doesn't escape
PreparedStatement prest;
prest = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
prest.setString(1,"abc");
prest.setInt(2,123);
prest.executeUpdate();
//prest.executeUpdate(query, PreparedStatement.RETURN_GENERATED_KEYS); Throws an error
//prest.executeQuery(); Throws an error
ResultSet rs = prest.getGeneratedKeys();
if(rs.next())
{
int last_inserted_id = rs.getInt(1);
}
java.sql을 사용합니다.결과Java.sql을 설정합니다.Station.getGeneratedKeys()를 사용하여 생성된 키를 검색합니다.
사용할 수 없는 경우RETURN_GENERATED_KEYS
, 다른 문장(이번에는 쿼리)을 사용하여 수행합니다.
SELECT last_insert_id()
해당 표에 자동 증분 기본 키 열이 있는지 확인합니다.
언급URL : https://stackoverflow.com/questions/5513180/java-preparedstatement-retrieving-last-inserted-id
반응형
'programing' 카테고리의 다른 글
AngularJS에서 페이지에 iframe을 동적으로 삽입합니다. (0) | 2023.10.17 |
---|---|
실행 중인 컨테이너가 없는데도 이미지를 제거할 수 없습니다. (0) | 2023.10.17 |
JSON 구문 분석 오류:ID에 POJO가 이미 있습니다. (0) | 2023.10.17 |
ntext 열에 있는 데이터 길이? (0) | 2023.10.17 |
jquery 데이터 선택기 (0) | 2023.10.17 |