반응형
[MySQL] jdbc Insert AutoIncrement 자동증가 값 가져오기
MySQL 데이터베이스에 jdbc를 이용해서 Insert하는 쿼리를 작성할 때,
PK값이 AutoIncrement로 되어 있는데, 이 자동 증가된 값을 코드 상에서 사용해야 할 때가 있습니다.
이럴 때, PreparedStatement 객체에서 쿼리를 실행하고 난 후, getGeneratedKeys()함수로 ResultSet에 결과 키 값을 저장하면 AutoIncrement 값을 가져올 수가 있습니다.
1. 실행코드
public void RuleConvertDatabaseInit() {
try {
conn = DriverManager.getConnection(
DatabaseConfig.driverTag + DatabaseConfig.url + "/" + DatabaseConfig.SchemaRuleDataConvert,
DatabaseConfig.id, DatabaseConfig.pw);
stmt = conn.createStatement();
} catch (SQLException e) {
MessageDialog.openError(Activator.ActiveShell().getShell(), "데이터베이스 초기화 에러", e.getMessage());
}
}
public int InsertMetadataFile(String profile, String name, String pid) {
int autoincrement = 0;
try {
RuleConvertDatabaseInit(); // DriverManager.getConnection 관련 초기화 코드
String query = "INSERT INTO metadatafile (IsMultiple, Profile, RuleName, FileHashKey) VALUES (?,?,?,?) ";
PreparedStatement pstmt = conn.prepareStatement(query); // String으로 쿼리 작성
pstmt.setInt(1, 0);
pstmt.setString(2, profile);
pstmt.setString(3, name);
pstmt.setString(4, pid);
pstmt.executeUpdate(); // ?,?,... Values 값에 인자 매칭시키고 쿼리 실행
ResultSet rs = pstmt.getGeneratedKeys(); // 쿼리 실행 후 생성된 키 값 반환
if (rs.next()) {
autoincrement = rs.getInt(1); // 키값 초기화
System.out.println("autoIncrement: " + autoincrement); // 출력
}
CloseDB();
return autoincrement;
} catch (SQLException e) {
MessageDialog.openError(Activator.ActiveShell().getShell(), "데이터베이스 에러", e.getMessage());
autoincrement = -1;
}
return autoincrement;
}
RuleConvertDatabaseInit()은 MySQL 데이터베이스에 연결하기 위한 설정값을 초기화하기 위해 사용한 함수인데요.
jdbc MySQL 데이터베이스 초기화 하는 코드는 다른 글에서 확인할 수 있으니 그 글을 참고하시면 되고,
- 실행순서
1) 데이터베이스 초기화 후 Insert 쿼리 작성
2) executeUpdate()로 쿼리 객체 실행
3) getGeneratedKeys()로 생성된 키값 ResultSet에 저장
4) rs.next(), rs.getInt(1)로 키값 가져오기
순서대로 코드가 진행됩니다.
잘 이해가 안가시는 부분이 있으면 알려드리겠습니다.
반응형
'Database > RDBMS' 카테고리의 다른 글
[MySQL] 파티셔닝 개념 및 사용법 (2) | 2021.04.28 |
---|---|
[오류해결] MySQL Read Only Table (0) | 2020.08.06 |
[오류해결] MariaDB errno: 150 "Foreign key constraint is incorrectly formed" (0) | 2020.08.06 |
[MySQL] Workbench 다이어그램 그리는 방법(EER Diagram) (0) | 2020.05.14 |
[MSSQL] MSSQL 설치 오류 sqlncli.msi 올바른 설치 패키지 사본을 사용하여 설치를 다시 시도하십시오. (0) | 2020.03.18 |