database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7178 게시물 읽기
No. 7178
JDBC에서 executeBatch()를 사용해서 데이터를 INSERT할 경우
작성자
권기혁(leolo)
작성일
2019-08-19 09:15
조회수
1,780

JDBC에서 executeBatch()를 사용해서 데이터를 INSERT할 경우,

 

BatchUpdateException 예외 처리에서 해당 열을 정확히 알 수 있는 방법이 있는지요.

 

아래와 같이 하면 알수는 있는데.. 이게..

 

Oracle에서는 사용이 가능한데.. 다른 DB(MSSQL)에서는 사용이 불가능하더군요.

 

 

 

예를 들어

 

데이터를 넣을때, 아래와 같이 3행에만 최대길이를 넘는 데이터를 넣을 경우

 

결과값과 같이 찍어주고자 합니다.

 

1행 - 에러없는 데이터

 

2행 - 에러없는 데이터

 

3행 - 에러있는 데이터

 

4행 - 에러없는 데이터

 

 

 

코드

 

catch (BatchUpdateException bex) {

 

int[] updateCount = bex.getUpdateCounts();

 

int batchIndex = idxCount * BATCH_SIZE + updateCount.length;

 

return new EDBException(EDBExceptionDefine.ERR_EXECUTE, EDBExceptionDefine.STR_EXECUTE, sql, bex.getMessage(), list.get(batchIndex));

 

}

 

 

 

결과

 

EDB-10003 : Execute failed.

 

ORA-12899: "EUC"."A_SAMPLE"."UNIQUE_ID" 열에 대한 값이 너무 큼(실제: 125, 최대값: 36)

 

INSERT INTO A_SAMPLE (seqno, unique_id, device) values (A_SAMPLE_SEQ.NEXTVAL, ?, ?)

 

INSERT INTO A_SAMPLE (seqno, unique_id, device) values (A_SAMPLE_SEQ.NEXTVAL, '11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111', '0003')

 

 

 

 

 

의견 부탁드립니다.

[Top]
No.
제목
작성자
작성일
조회
7181SQL 조건 간소화 [2]
ohyouknow
2019-08-28
1787
7180데이터 변경이력 조회 쿼리 문의 [3]
k62511
2019-08-27
1920
7179SQL 갼소화 [2]
ohyouknow
2019-08-27
1859
7178JDBC에서 executeBatch()를 사용해서 데이터를 INSERT할 경우
권기혁
2019-08-19
1780
7177Restore 오류 관련 해결 방법 문의 [2]
박판규
2019-08-01
1872
7176해당날짜 시간별 사람별 카운팅
김지철
2019-07-19
1823
7175SQL의 간소화 [2]
ohyouknow
2019-07-15
1900
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다