기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

Database/RDBMS

[MySQL] jdbc Insert AutoIncrement 값 가져오기

2020. 7. 30. 16:45
반응형

[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
    'Database/RDBMS' 카테고리의 다른 글
    • [오류해결] MySQL Read Only Table
    • [오류해결] MariaDB errno: 150 "Foreign key constraint is incorrectly formed"
    • [MySQL] Workbench 다이어그램 그리는 방법(EER Diagram)
    • [MSSQL] MSSQL 설치 오류 sqlncli.msi 올바른 설치 패키지 사본을 사용하여 설치를 다시 시도하십시오.
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바