개발 1도 모르는 사람

[Java] Jdbc 자동 커밋이 설정된 채 커밋할 수 없습니다. 본문

Java/Jdbc

[Java] Jdbc 자동 커밋이 설정된 채 커밋할 수 없습니다.

지구젤리귀여워 2023. 10. 23. 19:28
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