티스토리 뷰
Dim DR As OdbcDataReader = Nothing
Dim BUSI_NO = ""
strSql = ""
strSql &= vbCrLf & " SELECT BUSI_NO"
strSql &= vbCrLf & " FROM TB_GRPINF"
strSql &= vbCrLf & " WHERE BUSI_NO = '" & Replace(TextBox3.Text, "-", "") & "'"
DR = fncTranSelectDR(strSql, dbConn, dbTran)
DR.Read()
BUSI_NO = DR!BUSI_NO '여기에서 원하지 않은 데이터가 나온 이유는 WHERE 조건을 주지 않았기 때문이다.
If BUSI_NO = Replace(TextBox3.Text, "-", "") Then
MessageBox.Show("사업자번호가 이미 존재합니다. 다른 번호를 입력해주세요.")
Return
End If
여기에서 중복된 데이터는 DR.Read() 해서 잘 들어가는데
이제 중복되지 않은 데이터는 읽지도 않은 채 종료되어 버린다.
오류가 발생한 이유
주어진 코드에서 중복되지 않은 경우에 DR에서 값이 없어서 문제가 발생하는 이유는,
DR.Read() 메서드를 호출하기 전에 사업자번호에 해당하는 레코드가 없는 경우에도 DR.Read() 메서드를 실행하기 때문이다. 이 경우에는 DR에서 데이터를 읽을 수 없으므로 오류가 발생한다.
DR = fncTranSelectDR(strSql, dbConn, dbTran)
'DR.Read()
'BUSI_NO = DR!BUSI_NO '여기에서 원하지 않은 데이터가 나온 이유는 WHERE 조건을 주지 않았기 때문이다.
If DR.Read() Then
BUSI_NO = DR("BUSI_NO").ToString()
End If
DR.Close()
If BUSI_NO = Replace(TextBox3.Text, "-", "") Then
MessageBox.Show("사업자번호가 이미 존재합니다. 다른 번호를 입력해주세요.")
Return
End If
위의 코드에서 변경된 부분은 DR.Read() 호출 이후에 BUSI_NO를 읽는 부분이다. DR.Read()의 결과를 확인한 후에 데이터를 읽도록 수정했다. 따라서 중복된 경우에만 BUSI_NO 값을 비교하여 중복 여부를 확인하고, 중복되지 않은 경우에는 BUSI_NO 값이 비어있게 된다.
고쳐주니 중복이 되었든 중복이 되지 않았든 잘 데이터가 넘어간다.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- I/O
- 출력 메소드
- System.out.println
- alert
- focus 작동 안하는 경우
- alert focus
- MsgBox순서
- 자바 입출력
- Scanner 시간초과
- 변수의 종류
- 자바 출력 속도
- 변수
- 출력 스트림
- dataGridView
- BufferdReader 클래스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함