Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SQL
- sql function
- Socket 설명
- java sql
- Socket 이루어지는 과정
- sql 함수
- UTF-8
- EUC-KR
- SQL DQL
- MS949
- oracle
- 한글깨짐
- DQL 명령어
- nextLine 스스로종료 해결법
- Oracle DML 정리
- java Oracle 연동방법
- .git 안보이는이유
- java
- Java Oracle SQL Select
- Eclipse
- Java Oracle Select
- 자동 import
- eclipse 유용한 단축키
- Jdbc 자동커밋
- Jdbc commit()
- sc.nextLine 혼자종료
- ORACLE USING
- java Oracle 연동
- console한글깨짐
- Modul error
Archives
- Today
- Total
개발 1도 모르는 사람
[Java] Jdbc 자동 커밋이 설정된 채 커밋할 수 없습니다. 본문
728x90
Jdbc를 쓰다보면 "Connection.commit();" 을 넣어줘야 할 때가 생기기 마련인데
그러다보면 간혹 "자동 커밋이 설정된 채 커밋할 수 없습니다." 라는 문구를 볼 때가 있다.
Connection con;
Scanner sc = new Scanner(System.in);
try {
con = DriverManager.getConnection(jdbcURL, dbUserName, dbPassWord);
while(true) {
con.setAutoCommit(false); // 자동 커밋이 설정된 채 커밋할 수 없습니다.
String updateUrlP = "UPDATE BANK SET balance = balance + ? WHERE account_name = ?";
PreparedStatement stp = con.prepareStatement(updateUrlP);
String updateUrlM = "UPDATE BANK SET balance = balance + ? WHERE account_name = ?";
PreparedStatement stm = con.prepareStatement(updateUrlM);
System.out.println("본은행에 등록하신 성함을 입력해주세요.");
System.out.println("프로그램을 종료하시려면 [E] 를 입력해주세요");
String userName = sc.nextLine();
System.out.println(userName + "님의 통장에 입금은 (Y) 출금은 (N)을 입력해주세요.");
String checkIO = sc.nextLine();
if(checkIO.equalsIgnoreCase("Y")) {
System.out.println(userName +"님의 통장에 입금하실 금액을 입력해주세요.");
double userIn = sc.nextDouble();
stp.setDouble(1, userIn);
stp.setString(2, userName);
stp.executeUpdate();
System.out.println("입금 완료!");
break;
}else if (checkIO.equalsIgnoreCase("N")) {
System.out.println(userName + "님의 통장에서 출금하실 금액을 입력해주세요");
double userOut = sc.nextDouble();
stm.setDouble(1, userOut);
stm.setString(2, userName);
stm.executeUpdate();
System.out.println("출금 완료!");
break;
}if("e".equalsIgnoreCase(userName)) {
System.out.println("종료하겠습니다."); // break가 없으면 종료하겠습니다 만 출력됨
break;
}else if("e".equalsIgnoreCase(checkIO)) {
System.out.println("종료하겠습니다."); // break가 없으면 종료하겠습니다 만 출력됨
break;
}
con.commit();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
위 코드를 보면 "con.setAutoCommit (false) ;"
를 쓴게 보이는데 저것을 넣어주면 해결이 된다!
위 문구로 해결이 안될수도 있는데 이런경우에는 코드상 문제라기보단 "SQL Developer"
안에 문제가 있을 가능성이 있따.
1. SQL 상단메뉴에서 도구 - 환경설정으로 들어간다.
2. 환경설정 창에서 데이터베이스 메뉴 옆의 '+' 버튼을 누른다.
3. '+'해서 나온 메뉴 중 객체 뷰어를 더블클릭한다.
4. 데이터 편집기 옵션 - 커밋 옵션 부분의 자동 커밋 설정 체크박스를 해제하면 자동 커밋 해제 가능!
이쪽을 한번 체크해보도록 하자!
'Java > Jdbc' 카테고리의 다른 글
[Java] Jdbc WHERE SELECT 하기 (0) | 2023.10.17 |
---|---|
[Java] Java에서 SQL SELECT 하기 (0) | 2023.10.17 |
[Java] Java Oracle DB 연결 기반 설정 (1) | 2023.10.17 |