Java while 문 무한 loop 종료

2023. 2. 20. 13:09Java

프로젝트 내 src 내 javabasic 패키지 내 JdbcEx2.java

package javabasic;

import java.io.*;
import java.sql.*;

public class JdbcEx2 {

	Connection con;
	Statement stmt;
	BufferedReader buf;
	String url = "jdbc:oracle:thin:@localhost:1521:orcl";// ORCL 은 전역변수
	String user = "scott", pw = "a1234";

	// 먼저 생성자
	public JdbcEx2() throws Exception {
		dbConn();
		makeSql();
		close();
	}

	public void dbConn() {
//		DB 접속 위해서는 기본적으로 드라이버를 로딩해야. 이때 동적바인딩 변수를 이용.Class.forName임.
		try {// 클래스가없을경우대비해서예외문
				// OracleDriver를 메모리 로딩 및 DriverManager에 등록
			Class.forName("oracle.jdbc.driver.OracleDriver");
			con = DriverManager.getConnection(url, user, pw);
			System.out.println("접속 성공!!!");
		} catch (ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void makeSql() throws SQLException, IOException {// 키보드로부터 데이타를 받아야흐므로
		// new InputStream(System.in) 이부분이 실제 데이타를 받아오는 노드스트림이 되는거구
		// new BufferedReader는 그 노드스트림을 연결해주는 일종의 브릿지.버퍼드리더를 만들어 데이타를 받음
		buf = new BufferedReader(new InputStreamReader(System.in));

		String sql = "";
		System.out.println("** SQL문 입력하세요...");
		stmt = con.createStatement();

//		데이타를 키보드로부터 읽어오기
//		while 문을 빠져나오려면 SQL 문 입력을 종료하려면 Ctrl + Z 키를 누른다
		while ((sql = buf.readLine()) != null) {
			int cnt = stmt.executeUpdate(sql.trim());
			System.out.println(cnt + "개의 레코드가 수정되었음");
		} // while
	}// make SQL

	public void close() throws Exception {
		if (stmt != null)
			stmt.close();
		if (buf != null)
			buf.close();
		if (con != null)
			con.close();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			new JdbcEx2();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

 

while 무한루프 문 안에서 빠져나와 종료하려면

키보드 단축키

Ctrl + Z 를 눌러준다.

위 코드를 본다.

makeSql() 메서드 내 while 문에서 SQL 문을 키보드로 입력하게 되는데 SQL 문을 콘솔창에서 입력할 때는 맨 마지막에 ; 기호를 쓰지 않는다

'Java' 카테고리의 다른 글

Java execute(String sql)  (0) 2023.02.20
Java executeQuery(String sql)  (0) 2023.02.20
Java createStatement()  (1) 2023.02.20
Java setNull(int parameterIndex, int sqlType)  (0) 2023.02.20
Java getBufferSize()  (0) 2023.02.20