[MySQL] DB 공부

2022. 9. 13. 17:50·Programming/MySQL
728x90
package db;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//---------------------------------------------------------------------------
// Scott Schema에 있는 Emp테이블의 정보를 가져오는 클래스
//---------------------------------------------------------------------------
public class ScottSelectEmp {
	
	//---------------------------------------------------------------------------
	// public static void main(String[] args)
	//---------------------------------------------------------------------------
	public static void main(String[] args) {
		Connection conn = null; // DB에 연결된 상태(세션)를 담을 객체
		PreparedStatement pstmt = null; // SQL문을 나타내는 객체
		ResultSet rs = null; // 쿼리문을 실행한 결과를 담을 객체
		// 쓰고난 후에는 닫아줘야한다. 닫을때는 반대로 닫는다.
		
		try {
			
			// SQL 문장을 만들고 만약에 문자와 질의어(SELECT)라면
			// 그 결과를 담을 ResultSet 객체를 준비한 후에 실행한다.
			
			// 사원테이블(emp)에서 모든 정보를 사원번호 순으로 추출하자!
			String sql = "SELECT * FROM emp ORDER BY empno ";
			
			// 드라이버를 로딩하고, DB에 접속한다.
			conn = DBConnection.getConnection();
			
			// 커넥션을 맺은 곳에 질문할 준비를 한다.
			pstmt = conn.prepareStatement(sql);
			
			// 준비한 질문을 실행시키고, 결과값을 ResultSet에 넣는다.
			rs = pstmt.executeQuery();
			
			// 찾아온 데이터를 화면에 보여주자.
			System.out.println("EMPNO\tENAME\tJOB\tMGR\tHIREDATE\tSAL\tCOMM\tDEPTNO");
			System.out.println("=========================================================================");
			
			while(rs.next()) {
				int empno = rs.getInt("empno");
				String ename = rs.getString(2);
				String job = rs.getString("job");
				int mgr = rs.getInt("mgr");
				Date hiredate = rs.getDate(5); // hiredate => java.sql.Date
				int sal = rs.getInt(6);
				int comm = rs.getInt(7);
				int deptno = rs.getInt(8);
				
				String result = empno+"\t"+ename+"\t"+job+"\t"+mgr+"\t"+hiredate+"\t"+sal+"\t"+comm+"\t"+deptno;
				System.out.println(result);
				
			}			
			
		} catch (SQLException sple) {
			System.out.println("SELECT 문에서 예외가 발생하였습니다.");
		} finally {
			// DB 연결을 종료하기 전에 열려진 자원을 닫는다.
			try {
				if(rs != null) { rs.close(); }
				if(pstmt != null) { pstmt.close(); }
				if(conn != null) { conn.close(); }
			} catch (Exception e) {
				throw new RuntimeException(e.getMessage());
			}
		}
		
	} // End - public static void main(String[] args)

} // End - public class ScottSelectEmp
package db;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

//---------------------------------------------------------------------------
// 테이블의 구조를 알아내는 클래스
//---------------------------------------------------------------------------
public class TableDesc {

	//---------------------------------------------------------------------------
	// public static void main(String[] args)
	//---------------------------------------------------------------------------
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader (System.in));
		Connection conn = null; // DB에 연결된 상태(세션)를 담을 객체
		Statement stmt = null; // SQL문을 나타내는 객체
		ResultSet rs = null; // 쿼리문을 실행한 결과를 담을 객체
		ResultSetMetaData rsmd = null;
		
		/* ResultSetMetaData
		 * 
		 * meta-data ?
		 * 데이터의 데이터라고 할 수 있다.
		 * 즉, 우리가 사용하는 데이터베이스 내의 데이터를 구성하는 주변 정보들을 말한다.
		 * 예를들어 컬럼명, 컬럼타입, 컬럼 카운트 등등을 메타 데이터라고 할 수 있다.
		 * 
		 * ResultSet 자체가 쿼리문의 결과를 가져오는것이고,
		 * ResultSetMetaData 역시 쿼리문의 결과를 가져온 ResultSet에 대한 메타 데이터를 가져오는 것이다.
		 * 
		 * ResultSetMetaData는 아래와 같은 메서드들을 가지고 있다.
		 * int		getColumnCount() : 컬럼의 갯수를 리턴
		 * String	getColumnLabel(int index) : index의 컬럼명(Select enames AS EN 같은 경우는 EN을 의미한다.)
		 * String	getColumnName(int index) : index의 컬럼명(Select enames AS EN 같은 경우는 enames을 의미한다.)
		 * int		getColumnType(int index) : index의 컬럼타입의 정수형(ex, VARCHAR는 12이다.)
		 * String	getColumnTypeName(int index) : index의 컬럼타입을 직접적인 문자로 리턴한다.
		 * int 		getColumnDisplaySize(int index) : index의 컬럼에 지정된 데이터의 길이를 리턴한다.
		 */
		
		try {
			conn = DBConnection.getConnection(); // DB 접속
			
			String fromTable;
			String sql;
			
			System.out.print("보시고자하는 테이블의 이름을 입력하십시오");
			fromTable = br.readLine();
			
			sql = "SELECT * FROM " + fromTable;
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			rsmd = rs.getMetaData();
			
			int cols = rsmd.getColumnCount(); // 컬럼의 갯수
			System.out.println("컬럼명\t타입\t타입명\t폭");
			System.out.println("=========================================================");
			// 데이터베이스의 인덱스는 1부터 시작한다.
			for(int i = 1; i <= cols; i++) {
				System.out.print(rsmd.getColumnName(i) + "\t");
				System.out.print(rsmd.getColumnType(i) + "\t");
				System.out.print(rsmd.getColumnTypeName(i) + "\t");
				System.out.print(rsmd.getPrecision(i) + "\t");
				System.out.println();
			}
		} catch (SQLException sple) {
			System.out.println("SELECT 문에서 예외가 발생하였습니다.");
		} catch (Exception ie) {
			ie.printStackTrace();
		} finally {
			// DB 연결을 종료하기 전에 열려진 자원을 닫는다.
			try {
				if(rs != null) { rs.close(); }
				if(stmt != null) { stmt.close(); }
				if(conn != null) { conn.close(); }
			} catch (Exception e) {
				throw new RuntimeException(e.getMessage());
			}
		}

	} // End - public static void main(String[] args)

} // End - public class TableDesc
package db;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class RowsDisplay {

	public static void main(String[] args) {
		Connection conn = null; // DB에 연결된 상태(세션)를 담을 객체
		Statement stmt = null; // SQL문을 나타내는 객체
		ResultSet rs = null; // 쿼리문을 실행한 결과를 담을 객체
		String sql = "";
		
		try {
			conn = DBConnection.getConnection(); // DB접속
			 
			/* 기본은 순방향만 검색 가능
			 * 순방향과 역방향 모두 검색 가능
			 * TYPE_SCROLL_SENSITIVE : 변경 내용이 바로 반영
			 * TYPE_SCROLL_INSENSITIVE : 변경 내용이 바로 반영이 안됨
			 * CONCUR_READ_ONLY : 읽기 전용
			 * CONCUR_UPDATE : 읽기, 수정 가능
			 */
			sql = "SELECT * FROM emp ORDER BY empno";
			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
			rs = stmt.executeQuery(sql);
			
			char ch; // 키보드 입력한 값을 저장할 변수
			
			while(true) {
				do {
					System.out.print("1.처음 2.이전 3.다음 4.마지막 5.종료");
					// read()는 한 문자만을 입력받으므로, 버퍼로 인해서 예상치 못한 경우가 발생할 수 있다.
					ch = (char)System.in.read();
					// System.in.skip(2) : 연속해서 두번 또는 그 이상의 문자를 입력받는 경우에는
					// 반드시 skip() 메서드를 사용해서 버퍼에 쌓인 개행 문자를 버리도록 한다.
				} while(ch < '1' || ch > '5');
					
				switch(ch) {
				case '1':
					if(rs.first())
						System.out.println("처음 : " + rs.getString(1) + ":" + rs.getString(2));
					break;	
				case '2':
					if(rs.previous())
						System.out.println("이전 : " + rs.getString(1) + ":" + rs.getString(2));
					break;		
				case '3':
					if(rs.next())
						System.out.println("다음 : " + rs.getString(1) + ":" + rs.getString(2));
					break;										
				case '4':
					if(rs.last())
						System.out.println("마지막 : " + rs.getString(1) + ":" + rs.getString(2));
					break;				
				case '5':
					rs.close();
					System.exit(0);
					break;
				}
			}
		} catch (SQLException sple) {
			System.out.println("SELECT 문에서 예외가 발생하였습니다.");
		} catch (Exception ie) {
			ie.printStackTrace();
		} finally {
			// DB 연결을 종료하기 전에 열려진 자원을 닫는다.
			try {
				if(rs != null) { rs.close(); }
				if(stmt != null) { stmt.close(); }
				if(conn != null) { conn.close(); }
			} catch (Exception e) {
				throw new RuntimeException(e.getMessage());
			}
		}

	}

}
package db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Scanner;

//---------------------------------------------------------------------------
// Scott schema 테이블 관리 클래스
//---------------------------------------------------------------------------
public class ScottMgr {
	
	static Scanner keyboard = new Scanner(System.in);
	static Connection conn = null; // DB에 연결된 상태(세션)를 담을 객체
	static PreparedStatement pstmt = null; // SQL문을 나타내는 객체
	static ResultSet rs = null; // 쿼리문을 실행한 것에 대한 반환 값을 담을 객체
	static ResultSetMetaData rsmd = null; // 테이블의 메타데이터를 가리키는 객체
	static String sql = ""; // 쿼리문장을 저장할 변수
	static String[] FromTable = {"EMP", "DEPT", "SALGRADE"};
	
	//---------------------------------------------------------------------------
	// 메뉴 1 (테이블 선택) 
	//---------------------------------------------------------------------------
	public static void showMenu1() {
		System.out.println("작업하고자 하는 테이블을 선택하십시오.");
		System.out.println("0. 프로그램 종료");
		System.out.println("1. EMP		TABLE");
		System.out.println("2. DEPT 	TABLE");
		System.out.println("3. SALGRADE TABLE");
		System.out.print("선택 : ");
	} // End - public static void showMenu1()
	//---------------------------------------------------------------------------
	// 메뉴 2 (작업 선택 : 조회, 입력, 수정, 삭제)
	//---------------------------------------------------------------------------
	public static void showMenu2() {
		System.out.println("하시고자 하는 작업을 선택하십시오.");
		System.out.println("0. 조인");
		System.out.println("1. 조회");
		System.out.println("2. 입력");
		System.out.println("3. 수정");
		System.out.println("4. 삭제");
		System.out.print("선택 : ");
	}
	//---------------------------------------------------------------------------
	// public static void main(String[] args)
	//---------------------------------------------------------------------------
	public static void main(String[] args) {
		int choice1 = 0; // 선택한 테이블 번호를 저장할 변수
		
		while(true) {
			showMenu1(); // 테이블을 선택할 수 있게 메뉴를 보여준다.
			choice1 = keyboard.nextInt();
			keyboard.nextLine();
			
			switch(choice1) {
			/*case 1: subMenu(1);
				break;
			case 2: subMenu(2);
				break;
			case 3: subMenu(3);
				break;
			*/
			case 1: case 2: case 3:
				subMenu(choice1);
				break;
			case 0: System.out.println("프로그램을 종료합니다.");
				return;
			default: System.out.println("번호를 정확하게 입력하십시오.");
				break;
			}
		}
			
	} // End - public static void main(String[] args)
	
	//---------------------------------------------------------------------------
	// public static void main(String[] args)
	//---------------------------------------------------------------------------
	public static void subMenu(int choice1) {
		int choice2; // 조회, 입력, 수정, 삭제를 선택할 값을 저장 할 변수
		
		while(true) {
			showMenu2();
			choice2 = keyboard.nextInt();
			keyboard.nextLine();
			
			switch(choice2) {
			case 0: System.out.println("메인메뉴로 돌어갑니다.");
				return;
			case 1: selectTable(choice1); // 조회
				break;
			case 2: insertTable(choice1); // 입력
				break;
				default: System.out.println("작업할 번호를 정확하게 입력하십시오.");
				break;
			}
		}
	}
	
	//---------------------------------------------------------------------------
	// SELECT : 선택한 테이블의 모든 정보를 보여주자.
	//---------------------------------------------------------------------------
	public static void selectTable(int selectTb) {
		System.out.println("선택한 테이블 : " + FromTable[selectTb-1]);
		
		try {
			sql = "";
			sql = "SELECT * FROM " + FromTable[selectTb-1];
			
			conn = DBConnection.getConnection();
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			rsmd = rs.getMetaData();
			
			System.out.println("===================================================================");
			System.out.println(FromTable[selectTb-1]);
			System.out.println("===================================================================");
			
			int cols = rsmd.getColumnCount(); // 선택한 테이블의 컬럼 갯수를 알아낸다.
			for(int i = 1; i <= cols; i++) {
				System.out.print(rsmd.getColumnName(i) + "\t"); // 컬럼명을 보여준다.
			}
			System.out.println();
			System.out.println("===================================================================");
			
			// 데이터를 화면에 출력한다.
			while(rs.next()) {
				for(int i = 1; i <= cols; i++) {
					System.out.print(rs.getString(i) + "\t");
				}
				System.out.println(); // 1건의 데이터를 화면에 출력하고 나면 줄바꿈을 한다.
			}
			
			
		} catch (SQLException sple) {
			System.out.println("SELECT 문에서 예외가 발생하였습니다.");
		} finally {
			// DB 연결을 종료하기 전에 열려진 자원을 닫는다.
		} try {
			if(rs != null) { rs.close(); }
			if(pstmt != null) { pstmt.close(); }
			if(conn != null) { conn.close(); }
			} catch (Exception e) {
				throw new RuntimeException(e.getMessage());
			}
	}
	
	//---------------------------------------------------------------------------
	// INSERT : 데이터를 테이블에 등록하는 메서드
	//---------------------------------------------------------------------------
	public static void insertTable(int selectTb) {
		
		System.out.println("선택한 테이블 : " + FromTable[selectTb-1]);
		
		try {
			if(selectTb == 1) {
				System.out.print("EMPNO : ");
				int empno = keyboard.nextInt();	keyboard.nextLine();
				
				System.out.print("ENAME : ");
				String ename = keyboard.nextLine();
				System.out.print("JOB : ");
				String job = keyboard.nextLine();
				
				System.out.print("MGR : ");
				int mgr = keyboard.nextInt();	keyboard.nextLine();
				System.out.print("SAL : ");
				int sal = keyboard.nextInt();	keyboard.nextLine();
				
				System.out.print("COMM : ");
				int comm = keyboard.nextInt();	keyboard.nextLine();
				System.out.print("DEPTNO : ");
				int deptno = keyboard.nextInt();	keyboard.nextLine();
				
				sql = "";
				sql = "INSERT INTO " + FromTable[selectTb-1] + " VALUES(?,?,?,?,NOW(),?,?,?)";
				
				// 드라이버를 로딩하고 DB에 접속한다.
				conn = DBConnection.getConnection();
				
				// 커넥션을 맺은 곳에 질문할 준비를 한다.
				pstmt = conn.prepareStatement(sql);
				pstmt.setInt	(1, empno);
				pstmt.setString	(2, ename);
				pstmt.setString	(3, job);
				pstmt.setInt	(4, mgr);
				pstmt.setInt	(5, sal);
				pstmt.setInt	(6, comm);
				pstmt.setInt	(7, deptno);
				
			} else if(selectTb == 2) {
				
			} else if(selectTb == 3) {
				
			}
			
			// 입력, 수정, 조회 쿼리문의 실행을 공동으로 사용한다.
			int rtnCount = pstmt.executeUpdate(); // 입력, 수정, 삭제는 결과 값으로 실행된 건수를 반환한다.
			if(rtnCount > 0) {
				System.out.println(rtnCount + "건이 실행되었습니다.");
			} else {
				System.out.println("입력,수정,삭제 작업 실패.....");
			}
			
			
		} catch (SQLException sple) {
			System.out.println("SELECT 문에서 예외가 발생하였습니다.");
		} finally {
			// DB 연결을 종료하기 전에 열려진 자원을 닫는다.
		} try {
			if(rs != null) { rs.close(); }
			if(pstmt != null) { pstmt.close(); }
			if(conn != null) { conn.close(); }
			} catch (Exception e) {
				throw new RuntimeException(e.getMessage());
			}
		
		
		
	}
	
} // End - public class ScottMgr
package db;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

//---------------------------------------------------------------------------
// 사용자가 입력한 SELECT Query를 실행하는 클래스
//---------------------------------------------------------------------------
public class SelectDisplay {

	
	//---------------------------------------------------------------------------
	// public static void main(String[] args)
	//---------------------------------------------------------------------------
	public static void main(String[] args) {
		
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		ResultSetMetaData rsmd = null;
		
		Scanner query = new Scanner(System.in);
		
		try {
			String sql = "";
			int cols = 0;
			
			System.out.println("SELECT 쿼리문을 작성하십시오.");
			System.out.println("끝에 세미콜론(;)을 붙이지 마십시오.");
			System.out.print("SQL > ");
			
			sql = query.nextLine(); // 쿼리문을 입력한다.
			
			conn = DBConnection.getConnection(); // DB에 접속한다.
			stmt = conn.createStatement(); // 접속한 곳에 쿼리문을 사용할 준비를 한다.
			rs = stmt.executeQuery(sql); // 쿼리를 실행한다.
			rsmd = rs.getMetaData(); // 메타데이터를 가져온다.
			
			cols = rsmd.getColumnCount(); // 컴럼의 갯수를 알아낸다.
			System.out.print("\n\t");
			for(int i = 1; i <= cols; i++) {
				System.out.print(rsmd.getColumnName(i) + "\t");
			}
			System.out.println();
			System.out.println("=============================================================================================");
			System.out.println();
			
			while(rs.next()) {
				System.out.println("\t");
				for(int i = 1; i <= cols; i++) {
					System.out.print(rs.getString(i) + "\t");
				}
				System.out.println();
			}
			
		} catch (SQLException sqle) {
			System.out.println("쿼리문을 실행하는 중에 예외가 발생하였습니다.");
			sqle.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs != null) { rs.close(); }
				if(stmt != null) { stmt.close(); }
				if(conn != null) { conn.close(); }
			} catch (Exception e) {
				throw new RuntimeException(e.getMessage());
			}
		}
		

		
	} // End - public static void main(String[] args)

} // End - public class SelectDisplay
package db;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.sql.*;
//---------------------------------------------------------------------------
// Scott Schema에 있는 Table을 선택하여 데이터 보기
//---------------------------------------------------------------------------
public class ScottTbSwing extends JFrame {
	
	Container 		contentPane; // 작업영역
	JRadioButton[]	radioTb = new JRadioButton[3]; // 테이블 선택
	static String[] tbNames = {"EMP", "DEPT", "SALGRADE"}; // 테이블 목록
	static JTextArea tbView = new JTextArea(24, 100); // 쿼리를 실행한 결과를 보여줄 영역
	static JLabel viewLabel;
	static JTextField sqlEdit; // 쿼리를 직접 작성하는 영역
	
	//---------------------------------------------------------------------------
	// 생성자
	//---------------------------------------------------------------------------
	ScottTbSwing() { // 생성자는 리턴값이 없
		setTitle("Scott Schema Table 조회");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		contentPane = getContentPane(); // 작업영역을 알아낸다.
		
		tbView.setBackground(Color.YELLOW);
		tbView.setFont(new Font("Serif", Font.PLAIN, 22));
		
		// 작업영역에 tbView Panel을 부착한다.
		contentPane.add(new TbViewPanel(), BorderLayout.CENTER);
		
		setSize(1700, 800);
		setLocation(100, 100);
		setVisible(true);	
	} // End - 생성자 
	
	//---------------------------------------------------------------------------
	// class TbViewPanel : 내부 클래스
	//---------------------------------------------------------------------------
	class TbViewPanel extends JPanel {
		
		JButton btnSQL;
		JPanel radioPanel = new JPanel(); // 테이블을 선택하는 라디오버튼들, 쿼리문 입력, 쿼리 실행 버튼
		JPanel viewPanel = new JPanel(); // Select한 결과를 보여주는 View
		
		//---------------------------------------------------------------------------
		// 생성자
		//---------------------------------------------------------------------------
		TbViewPanel() {
			ButtonGroup tableGrp = new ButtonGroup(); // 버튼 그룹 객체 생성
			for(int i = 0; i < radioTb.length; i++) {
				radioTb[i] = new JRadioButton(tbNames[i]); // 라디오 버튼 생성
				if(i == 0) radioTb[0].setSelected(true); // 첫번째 라디오 버튼을 선택된 상태로 설정한다.
				tableGrp.add(radioTb[i]); // 버튼 그룹에 생성한 라디오 버튼을 장착한다.
				radioPanel.add(radioTb[i]); // 판넬에 버튼을 장착한다.
				
				
			}
			
			sqlEdit = new JTextField(60);
			sqlEdit.setBackground(Color.GREEN);
			sqlEdit.setFont(new Font("Arial", Font.BOLD+Font.ITALIC, 18));
			radioPanel.add(sqlEdit);
			
			btnSQL = new JButton("SQL");
			
			// btnSQL 버튼에 ActionListener를 등록한다.
			btnSQL.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent e) {
					if(radioTb[0].isSelected()) { // Emp Table
						selectTable(0);
					} else if(radioTb[1].isSelected()) { // Dept Table
						selectTable(1);
					} else if(radioTb[2].isSelected()) { // Salgrade Table
						selectTable(2);			
					}	
				}
				
			});
			
			
			
			radioPanel.add(btnSQL);
			radioPanel.add(tbView);
			add(new JScrollPane(tbView));
			
			contentPane.add(radioPanel, BorderLayout.NORTH);
			
		} // End - 생성자
		
	} // End - class TbViewPanel extends JPanel
	public static void selectTable(int selectTb) {
		
		Connection conn = null; // DB가 연결된 상태(세션)를 담을 객체
		PreparedStatement pstmt = null; // SQL 문을 담을 객체
		ResultSet rs = null; // Query문을 실행한 결괏값을 담을 객체
		ResultSetMetaData rsmd = null; // MetaData를 담을 객체
		
		try {
			String sql = "";
			
			if(!sqlEdit.getText().equals("")) sql = sqlEdit.getText();
			else 							  sql = "SELECT * FROM " + tbNames[selectTb];
			
			conn = DBConnection.getConnection(); // DB와 연결
			pstmt = conn.prepareStatement(sql); // 연결된 곳에 쿼리를 준비한다.
			rs = pstmt.executeQuery(); // 질의한 쿼리의 결과를 담는다.
			rsmd = rs.getMetaData(); // rs에서 메타데이터를 가져온다.
			
			int cols = rsmd.getColumnCount(); // Select된 컬럼의 갯수를 알아낸다.
			int spLength = 0; // 컬럼 전체의 길이
			
			// 컬럼명을 출력한다.
			for(int i = 1; i <= cols; i++) {
				tbView.append("  " + rsmd.getColumnName(i) + "\t");
				// System.out.println(rsmd.getColumnDisplaySize(i));
				// rsmd.getColumnDisplaySize(i) : 컬럼의 길이
				spLength = spLength + rsmd.getColumnDisplaySize(i);
			}
			tbView.append("\n");
			
			spLength = spLength + 8 * (rsmd.getColumnCount() - 1);
			for(int i = 0; i < spLength; i++) {
				tbView.append("=");
			}
			tbView.append("\n");
			
			// 쿼리의 실행결과로 반환된 데이터를 출력한다.
			while(rs.next()) { // row
				for(int i = 1; i <= cols; i++) { // column
					tbView.append("  " + rs.getString(i) + "\t");
				}
				tbView.append("\n");
			}
			
			for(int i = 0; i < spLength*1.7; i++) {
				tbView.append("-");
			}
			tbView.append("\n");
		} catch (SQLException sqle) {
			System.out.println("쿼리문을 실행하는 중에 예외가 발생하였습니다.");
			sqle.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs != null) { rs.close(); }
				if(pstmt != null) { pstmt.close(); }
				if(conn != null) { conn.close(); }
			} catch (Exception e) {
				throw new RuntimeException(e.getMessage());
			}
		}
		
	}
	
	
	
	//---------------------------------------------------------------------------
	// public static void main(String[] args)
	//---------------------------------------------------------------------------
	public static void main(String[] args) {
		new ScottTbSwing();
	} // End - public static void main(String[] args)

} // End - public class ScottTbSwing

'Programming > MySQL' 카테고리의 다른 글

[MySQL] 타입 변환 BINARY, CAST(), CONVERT()  (0) 2022.09.08
[MySQL] 패턴 매칭 LIKE, REGEXP  (0) 2022.09.08
[MySQL] 흐름 제어 CASE, IF(), IFNULL(), NULLIF()  (0) 2022.09.08
[MySQL] 비트 연산자 (bitwise operator)  (0) 2022.09.08
[MySQL] 논리 연산자 (logical operator)  (0) 2022.09.08
'Programming/MySQL' 카테고리의 다른 글
  • [MySQL] 타입 변환 BINARY, CAST(), CONVERT()
  • [MySQL] 패턴 매칭 LIKE, REGEXP
  • [MySQL] 흐름 제어 CASE, IF(), IFNULL(), NULLIF()
  • [MySQL] 비트 연산자 (bitwise operator)
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MySQL
    CSS
    react
    next.js
    리액트
    array
    타입스크립트
    Java
    HTML
    event
    자바스크립트
    JavaScript
    변수
    object
    제어문
    TypeScript
    web
    Python
    파이썬
    객체
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
[MySQL] DB 공부
상단으로

티스토리툴바