Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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 31
Archives
Today
Total
관리 메뉴

기록

day 0605 데이터베이스 연결 프로그래밍 본문

📖

day 0605 데이터베이스 연결 프로그래밍

슈슈파나 2024. 6. 5. 17:35
package com.kosta.exam01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;

public class InsertStudent {
	public static void main(String[] args) {
		String name;
		int kor, eng, math;
		Scanner sc = new Scanner(System.in);
		System.out.print("학생의 이름==>");
		name = sc.next();
		System.out.print("국어점수 ==>");
		kor = sc.nextInt();
		System.out.print("영어점수 ==>");
		eng = sc.nextInt();
		System.out.print("수학점수 ==>");
		math = sc.nextInt();
		
		Connection conn = null;
		Statement stmt = null;
		
		try {
			String sql = "insert into student values('"+name+"',"+kor+","+eng+","+math+")";
			
			//1. jdbc드라이버를 메모리로 로드한다.
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			//2. DB서버에 연결한다.
			conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:XE", 
					"c##madang", 
					"madang");
			
			//3. 데이터베이스 명령어 실행 담당 객체를 생성
			stmt = conn.createStatement();
			
			//4. 데이터베이스 명령어를 실행한다.
			int re = stmt.executeUpdate(sql);
			
			if(re == 1) {
				System.out.println("학생의 정보를 추가 하였습니다.");
			}else {
				System.out.println("학생의 정보 추가에 실패하였습니다.");
			}
			
		}catch (Exception e) {
			System.out.println("예외발생:"+e.getMessage());
		}finally {
			try {
				if(stmt != null) {
					stmt.close();
				}
				if( conn != null) {
					conn.close();
				}				
			}catch (Exception e) {
				// TODO: handle exception
			}
		}
	}
}
package com.kosta.exam01;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

// 학생의 이름, 국어, 영어, 수학을 입력받아 
// student테이블에 정보를 추가하는 프로그램을 GUI로 작성합니다.
// 화면구성및 변수명등은 자유롭게 합니다.

public class InsertStudentGUI extends JFrame {
	JTextField jtf_name;
	JTextField jtf_kor;
	JTextField jtf_eng;
	JTextField jtf_math;
		
	public InsertStudentGUI() {
		setLayout(new FlowLayout());
		jtf_name = new JTextField(10);
		jtf_kor = new JTextField(5);
		jtf_eng = new JTextField(5);
		jtf_math = new JTextField(5);
		
		add(new JLabel("이름"));
		add(jtf_name);
		add(new JLabel("국어"));
		add(jtf_kor);
		add(new JLabel("영어"));
		add(jtf_eng);
		add(new JLabel("수학"));
		add(jtf_math);
		
		JButton btnAdd= new JButton("등록");
		btnAdd.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				Connection conn = null;
				Statement stmt = null;
				String name = jtf_name.getText();
				int kor = Integer.parseInt(jtf_kor.getText());
				int eng = Integer.parseInt(jtf_eng.getText());
				int math = Integer.parseInt(jtf_math.getText());
				
				try {
					String sql = "insert into student values('"+name+"',"+kor+","+eng+","+math+")";
					
					//1. jdbc드라이버를 메모리로 로드한다.
					Class.forName("oracle.jdbc.driver.OracleDriver");
					
					//2. DB서버에 연결한다.
					conn = DriverManager.getConnection(
							"jdbc:oracle:thin:@localhost:1521:XE", 
							"c##madang", 
							"madang");
					
					//3. 데이터베이스 명령어 실행 담당 객체를 생성
					stmt = conn.createStatement();
					
					//4. 데이터베이스 명령어를 실행한다.
					int re = stmt.executeUpdate(sql);
					
					if(re == 1) {
						System.out.println("학생의 정보를 추가 하였습니다.");
					}else {
						System.out.println("학생의 정보 추가에 실패하였습니다.");
					}
					
				}catch (Exception ex) {
					System.out.println("예외발생:"+ex.getMessage());
				}finally {
					try {
						if(stmt != null) {
							stmt.close();
						}
						if( conn != null) {
							conn.close();
						}				
					}catch (Exception ex) {
						// TODO: handle exception
					}
				}				
			}
		});
		
		setSize(550, 300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	public static void main(String[] args) {	
		new InsertStudentGUI();
	}
}

 

/추가하기/

/조회하기/

/sql문 끝내기/

}finally {
    try {
        if(stmt != null) {
            stmt.close();
        }
        if(conn != null) {
            conn.close();
        }
        if(rs != null) {
            rs.close();
        }
    }catch(Exception ex) {
        System.out.println("예외발생 : " + ex.getMessage());
    }

 

/sql문 데이터 조회하기/

package com.kosta.exam01;

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

public class ListStudent {
	public static void main(String[] args) {
		String sql = "select * from student";
		Statement stmt = null;
		Connection conn = null;
		ResultSet rs = null;
		
		try {
			// 드라이버 이름
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:XE",
					"c##madang",
					"madang");
			stmt = conn.createStatement();
			
			rs = stmt.executeQuery(sql);
			
			// 레코드가 더이상 없다면 false 탈출한다
			while(rs.next()) {
				// 컬럼 인덱스 : 내가 실행한 명령어 기준
				String name = rs.getString(1);
				int kor = rs.getInt(2);
				int eng = rs.getInt(3);
				int math = rs.getInt(4);
				System.out.println(name + ", " + kor + ", " + eng + ", " + math);
			}
			
		}catch(Exception e) {
			System.out.println("예외발생 : " + e.getMessage());
		}finally {
			try {
				if(stmt != null) {
					stmt.close();
				}
				if(conn != null) {
					conn.close();
				}
				if(rs != null) {
					rs.close();
				}
			}catch(Exception ex) {
				System.out.println("예외발생 : " + ex.getMessage());
			}
			
		}
	}
}

 

insert into student values('학생, 100, 90, 80'); 추가 후 실행하면 반영된다

 

/화면 구성하기/

package com.kosta.exam01;

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class ListStudentGUI extends JFrame {
	JTextArea jta;
	
	public ListStudentGUI(){
		jta = new JTextArea();
		JScrollPane jsp = new JScrollPane(jta);
		JPanel p = new JPanel();
		p.setLayout(new FlowLayout(FlowLayout.RIGHT));
		JButton btnRead = new JButton("읽어오기");
		p.add(btnRead);
		
		add(jsp, BorderLayout.CENTER);
		add(p, BorderLayout.SOUTH);
		
		setSize(400, 300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		new ListStudentGUI();
	}
}

/sql문 JFrame "읽어오기" 버튼으로 데이터 불러오기/

package com.kosta.exam01;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class ListStudentGUI extends JFrame {
	JTextArea jta;
	
	public ListStudentGUI(){
		jta = new JTextArea();
		JScrollPane jsp = new JScrollPane(jta);
		JPanel p = new JPanel();
		p.setLayout(new FlowLayout(FlowLayout.RIGHT));
		JButton btnRead = new JButton("읽어오기");
		p.add(btnRead);
		
		add(jsp, BorderLayout.CENTER);
		add(p, BorderLayout.SOUTH);
		
		setSize(400, 300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		btnRead.addActionListener(new ActionListener() {	
			@Override
			public void actionPerformed(ActionEvent e) {
				// 데이터베이스 불러오기전에 지우기
				jta.setText(" " );
				
				String sql = "select * from student";
				
				Statement stmt = null;
				Connection conn = null;
				ResultSet rs = null;
				
				try {
					Class.forName("oracle.jdbc.driver.OracleDriver");
					conn = DriverManager.getConnection(
							"jdbc:oracle:thin:@localhost:1521:XE",
							"c##madang",
							"madang");
					stmt = conn.createStatement();
					
					rs = stmt.executeQuery(sql);
					
					while(rs.next()) {
						String name = rs.getString(1);
						int kor = rs.getInt(2);
						int eng = rs.getInt(3);
						int math = rs.getInt(4);	
						String row = name + ", " + kor + ", " + eng + ", " + math + "\n";
						jta.append(row);
					}
				}catch(Exception ex) {
					System.out.println("예외발생 : " + ex.getMessage());
				}finally {
					try {
						if(stmt != null) {
							stmt.close();
						}
						if(conn != null) {
							conn.close();
						}
						if(rs != null) {
							rs.close();
						}
					}catch(Exception ex) {
						System.out.println("예외발생 : " + ex.getMessage());
					}
				}
			}
		});
	}
	
	public static void main(String[] args) {
		new ListStudentGUI();
	}
}

 

/2차원 배열의 JTable/

/화면 구성하기/

package com.kosta.exam01;

import java.awt.ScrollPane;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class JTableTest extends JFrame {
	JTable table;
	
	public JTableTest() {
	
		String[] colNames = {"이름", "국어", "영어", "수학"};
		String[][] rowData = {
				{"가","80","90","100"},
				{"나","80","90","95"},
				{"다","90","80","70"}
		};
		
		// 테이블 생성
		table = new JTable(rowData, colNames);
		JScrollPane jsp = new JScrollPane(table);
		add(jsp);
		
		setSize(400, 100);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		new JTableTest();
	}
}

 

/버튼 눌러서 배열에 데이터 불러오기/

단점 : 데이터 추가 후 다시 불러오기에 부적합하다

JTable Vector로 생성하기 (Vector는 list의 후손이다)

 

/화면 구성하기/

package com.kosta.exam01;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class ListStudentJTableGUI extends JFrame {
	// row 데이터는 Vector, colunm은 String
	Vector<String> colName;
	Vector<Vector<String>> rowData;
	JTable table;
	
	public ListStudentJTableGUI(){
		colName = new Vector<String>();
		colName.add("이름");		
		colName.add("국어");		
		colName.add("영어");		
		colName.add("수학");
		
		rowData = new Vector<Vector<String>>();
		
		table = new JTable(rowData, colName);
		JScrollPane jsp = new JScrollPane(table);
		
		JPanel p = new JPanel();
		p.setLayout(new FlowLayout(FlowLayout.RIGHT));
		JButton btnRead = new JButton("읽어오기");
		p.add(btnRead);
		
		add(jsp, BorderLayout.CENTER);
		add(p, BorderLayout.SOUTH);
		
		setSize(400, 300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		new ListStudentJTableGUI();
	}
}

package com.kosta.exam01;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;

public class ListStudentJTableGUI extends JFrame {
	// row 데이터는 Vector, colunm은 String
	Vector<String> colName;
	Vector<Vector<String>> rowData;
	JTable table;
	
	public ListStudentJTableGUI(){
		colName = new Vector<String>();
		colName.add("이름");		
		colName.add("국어");		
		colName.add("영어");		
		colName.add("수학");
		
		rowData = new Vector<Vector<String>>();
		
		table = new JTable(rowData, colName);
		JScrollPane jsp = new JScrollPane(table);
		
		JPanel p = new JPanel();
		p.setLayout(new FlowLayout(FlowLayout.RIGHT));
		JButton btnRead = new JButton("읽어오기");
		p.add(btnRead);
		
		add(jsp, BorderLayout.CENTER);
		add(p, BorderLayout.SOUTH);
		
		setSize(400, 300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		btnRead.addActionListener(new ActionListener() {	
			@Override
			public void actionPerformed(ActionEvent e) {
				// 데이터베이스 불러오기전에 지우기
				// jta.setText(" " );
				rowData.clear();
				
				String sql = "select * from student";
				
				Statement stmt = null;
				Connection conn = null;
				ResultSet rs = null;
				
				try {
					Class.forName("oracle.jdbc.driver.OracleDriver");
					conn = DriverManager.getConnection(
							"jdbc:oracle:thin:@localhost:1521:XE",
							"c##madang",
							"madang");
					stmt = conn.createStatement();
					
					rs = stmt.executeQuery(sql);
					
					while(rs.next()) {
						String name = rs.getString(1);
						int kor = rs.getInt(2);
						int eng = rs.getInt(3);
						int math = rs.getInt(4);	
						// vector로 추가하기
						Vector<String> row = new Vector<String>();
						row.add(name);
						row.add(kor+"");
						row.add(eng+"");
						row.add(math+"");
						rowData.add(row);
					}
					table.updateUI();
				
				}catch(Exception ex) {
					System.out.println("예외발생 : " + ex.getMessage());
				}finally {
					try {
						if(stmt != null) {
							stmt.close();
						}
						if(conn != null) {
							conn.close();
						}
						if(rs != null) {
							rs.close();
						}
					}catch(Exception ex) {
						System.out.println("예외발생 : " + ex.getMessage());
					}
				}
			}
		});
	}
	
	public static void main(String[] args) {
		new ListStudentJTableGUI();
	}
}

 

자료를 조회하는 데이터베이스 명령어

select 컬럼명1, 컬럼명2, .. from 테이블명;

 

예) student 테이블에서 학생의 이름을 조회

select name from student;

 

예) student 테이블에서 학생의 이름, 영어점수 조회

select name, eng from student;

 

예) student 테이블에서 모든 속성 조회

select * from student;

* 은 모두

dir - *.java 를 하면 모든 java 파일을 보여준다

 

<< 조건을 만족하는 데이터의 조회 >>

 

select 칼럼명 from 테이블명 where 조건식;

 

예) 국어점수가 90점 이상인 학생들의 이름, 국어 점수 조회

select name, kor from student where kor >=90;

 

예) 이름이 '학생'인 학생의 국어 점수를 조회

select kor from student where name = '학생';

 

예) 이름이 '학생'인 학생의 모든 속성 조회

select * from student where name = '학생';

 

/사용자한테 이름을 입력받아 해당 학생의 정보를 조회하여 출력하기/

package com.kosta.exam01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

// 사용자한테 이름을 입력받아 해당 학생의 정보를 조회하여 출력하기(CUI)
// select * from student where name = ' '
public class FindStudentByName {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String search;
		
		System.out.print("학생의 이름 : ");
		search = sc.next();
		
		String sql = "select * from student where name = '"+ search +"'";
		Statement stmt = null;
		Connection conn = null;
		ResultSet rs = null;
		
		try {
			String driver = "oracle.jdbc.driver.OracleDriver";
			String url = "jdbc:oracle:thin:@localhost:1521:XE";
			String username = "c##madang";
			String password = "madang";
			
			Class.forName(driver);
			conn = DriverManager.getConnection(url, username, password);
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			
			while(rs.next()) {
				String name = rs.getString(1);
				int kor = rs.getInt(2);
				int eng = rs.getInt(3);
				int math = rs.getInt(4);
				System.out.println(name+","+kor+","+eng+","+math);
			}
			
		}catch(Exception e) {
			System.out.println("예외발생 : " + e.getMessage());
		}finally{
			try {
				if(stmt != null) {
					stmt.close();
				}
				if(conn != null) {
					conn.close();
				}
				if(rs != null) {
					rs.close();
				}
			}catch(Exception e) {
				System.out.println("예외발생 : " + e.getMessage());
			}
		}
	}
}

 


 

14:00 ~ 

 

/선택한 학생의 이름 출력하기/

table.addMouseListener(new MouseListener() {
    @Override
    public void mouseReleased(MouseEvent e) {		
        // getSelectedRow(); 선택한 행 번호 출력
        int idx = table.getSelectedRow();
        Vector<String> row = rowData.get(idx);
        String name = row.get(0);
        System.out.println(name);
    }

/선택한 학생의 모든 정보 출력하기/

table.addMouseListener(new MouseListener() {	
    @Override
    public void mouseReleased(MouseEvent e) {
        // getSelectedRow(); 선택한 행 번호 출력
        int idx = table.getSelectedRow();
        Vector<String> row = rowData.get(idx);
        String search = row.get(0);

        String sql = "select * from student where name = '"+search+"'";	

        String driver = "oracle.jdbc.driver.OracleDriver";
        String url = "jdbc:oracle:thin:@localhost:1521:XE";
        String username = "c##madang";
        String password = "madang";

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;				

        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, username, password);
            stmt = conn.createStatement();

            rs = stmt.executeQuery(sql);

            while(rs.next()) {
                String name = rs.getString(1);
                int kor = rs.getInt(2);
                int eng = rs.getInt(3);
                int math = rs.getInt(4);
                System.out.println(name+","+kor+","+eng+","+math);
            }					
        }catch (Exception ex) {
            System.out.println("예외발생:"+ex.getMessage());
        }finally {
            try {
                if(rs != null) {
                    rs.close();
                }
                if(stmt != null) {
                    stmt.close();
                }
                if( conn != null) {
                    conn.close();
                }
            }catch (Exception ex) {
                System.out.println("예외발생:"+ex.getMessage());
            }
        }
    }

/테이블에 있는 정보를 등록, 조회, 선택한 학생 클릭하면 모든 정보 출력하기/

package com.kosta.exam01;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class InsertSelectStudent extends JFrame {
	JTextField jtf_name;
	JTextField jtf_kor;
	JTextField jtf_eng;
	JTextField jtf_math;
	
	Vector<String> colName;
	Vector<Vector<String>> rowData;
	JTable table;

	public static String driver = "oracle.jdbc.driver.OracleDriver";
	public static String url= "jdbc:oracle:thin:@localhost:1521:XE";
	public static String username = "c##madang";
	public static String password = "madang";
	
	Statement stmt = null;
	Connection conn = null;
	ResultSet rs = null;
	
	Vector<String> row;
	
	String name;
	int kor, eng, math;
	
	public void clickStudent() {
		// JTable에서 눌렀다 떼지면 선택한 학생 정보 출력하기 (선택한 행의 인덱스 가져오기)
		int idx = table.getSelectedRow();
		
		// JTable의 데이터를 갖고있는 rowDate로 부터 선택한 행의 정보를 갖고온다
		row = rowData.get(idx);
		
		// 갖고온 Vector로 부터 이름을 가져온다
		String search = row.get(0);
		
		// student 테이블에서 선택한 학생의 이름을 레코드에서 조회하기 위한 명령어를 만든다
		String sql = "select * from student where name = '"+search+"'";
		
		try {
			Class.forName(driver);
            conn = DriverManager.getConnection(url, username, password);
            stmt = conn.createStatement();

            rs = stmt.executeQuery(sql);
            
			// 만약 학생의 이름이 중복되지 않는다면 검색결과가 한 건 밖에 없을 것이므로
			// while문 보다는 if문을 사용한다
			if(rs.next()) {
				name = rs.getString(1);
				kor = rs.getInt(2);
				eng = rs.getInt(3);
				math = rs.getInt(4);	
				jtf_name.setText(name);
				jtf_kor.setText(kor + "");
				jtf_eng.setText(eng + "");
				jtf_math.setText(math + "");			
	           }					
        }catch (Exception ex) {
            System.out.println("예외발생:"+ex.getMessage());
        }finally {
            try {
                if(rs != null) {
                    rs.close();
                }
                if(stmt != null) {
                    stmt.close();
                }
                if( conn != null) {
                    conn.close();
                }
            }catch (Exception ex) {
                System.out.println("예외발생:"+ex.getMessage());
            }
        }
	}
	public void insertStudent() {
		name = jtf_name.getText();
		kor = Integer.parseInt(jtf_kor.getText());
		eng = Integer.parseInt(jtf_eng.getText());
		math = Integer.parseInt(jtf_math.getText());

		try {
			String sql = "insert into student values('"+name+"',"+kor+","+eng+","+math+")";
			
			Class.forName(driver);
			conn = DriverManager.getConnection(url, username, password);
			stmt = conn.createStatement();

			int re = stmt.executeUpdate(sql);
			
			if(re == 1) {
				System.out.println("학생의 정보를 추가 하였습니다.");
				loadStudent();
			}else {
				System.out.println("학생의 정보 추가에 실패하였습니다.");
				loadStudent();
			}
			
		}catch (Exception e) {
			System.out.println("예외발생:"+e.getMessage());
		}finally {
			try {
				if(stmt != null) {
					stmt.close();
				}
				if( conn != null) {
					conn.close();
				}	
				if(rs != null) {
					rs.close();
				}
				
				jtf_name.setText("");
				jtf_kor.setText("");
				jtf_eng.setText("");
				jtf_math.setText("");
				
			}catch (Exception e) {
				System.out.println("예외발생 : " + e.getMessage());
			}
		}	
	}
	
	// student 의 모든 학생 정보를 조회하여 JTable에 출력하는 메소드
	public void loadStudent() {
		rowData.clear();
		
		// order by column_name asc 각 열을 기준으로 오름차순 정렬
		String sql = "select * from student order by name asc";
		
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, username, password);
			stmt = conn.createStatement();
			
			// 조회하기 (ResultSet으로 반환한다)
			rs = stmt.executeQuery(sql);
			
			// next() 데이터를 하나씩 옮겨가다 없으면 false
			while(rs.next()) {
				// 칼럼을 변수에 담는다
				name = rs.getString(1); // 첫번째 칼럼
				kor = rs.getInt(2); // 두번째 칼럼
				eng = rs.getInt(3);
				math = rs.getInt(4);	
				// Vector에 추가하기
				row = new Vector<String>();
				row.add(name);
				row.add(kor+"");
				row.add(eng+"");
				row.add(math+"");
				rowData.add(row);
			}
			
			// 테이블을 다시 그려줘
			table.updateUI();
			
			jtf_name.setText("");
			jtf_kor.setText("");
			jtf_eng.setText("");
			jtf_math.setText("");

		}catch(Exception e) {
			System.out.println("예외발생 : " + e.getMessage());
		}finally {
			try {
				if(rs != null) {
					rs.close();
				}
				if(stmt != null) {
					stmt.close();
				}
				if( conn != null) {
					conn.close();
				}
			}catch (Exception ex) {
				System.out.println("예외발생 : " + ex.getMessage());
			}
		}
	}
	
	public InsertSelectStudent(){	
		jtf_name = new JTextField(10);
		jtf_kor = new JTextField(5);
		jtf_eng = new JTextField(5);
		jtf_math = new JTextField(5);
		
		JPanel p = new JPanel();
		
		p.add(new JLabel("이름"));
		p.add(jtf_name);
		p.add(new JLabel("국어"));
		p.add(jtf_kor);
		p.add(new JLabel("영어"));
		p.add(jtf_eng);
		p.add(new JLabel("수학"));
		p.add(jtf_math);

		colName = new Vector<String>();
		colName.add("이름");		
		colName.add("국어");		
		colName.add("영어");		
		colName.add("수학");
		
		rowData = new Vector<Vector<String>>();
		table = new JTable(rowData, colName);
		JScrollPane jsp = new JScrollPane(table);

		JButton btnAdd= new JButton("등록");
		JButton btnAddUpdate = new JButton("수정");
		JButton btnAddDelete = new JButton("삭제");
		JButton btnRead = new JButton("조회");
		
		p.add(btnAdd);		
		p.add(btnAddUpdate);		
		p.add(btnAddDelete);		
		p.add(btnRead);
		
		add(p, BorderLayout.NORTH);
		add(jsp, BorderLayout.CENTER);
		
		// 창이 열리자마자 정보창에 출력하기
		loadStudent();
		
		setSize(710, 350);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		table.addMouseListener(new MouseListener() {		
			@Override
			public void mouseReleased(MouseEvent e) {
				clickStudent();
		    }
			
			@Override
			public void mousePressed(MouseEvent e) {
			}
			
			@Override
			public void mouseExited(MouseEvent e) {
			}
			
			@Override
			public void mouseEntered(MouseEvent e) {
			}
			
			@Override
			public void mouseClicked(MouseEvent e) {
			}
		});
		
		btnAdd.addActionListener(new ActionListener() {	
			@Override
			public void actionPerformed(ActionEvent e) {
				insertStudent();
			}
		});

		btnRead.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					loadStudent();
				}
			});
	}
	
	public static void main(String[] args) {
		new InsertSelectStudent();
	}
}

/모든 정보 출력하기/

/새로운 정보 등록하기/

수정/삭제는 ,,, 직접 해보기 ,,,,,,,,, 

 

- 오늘 학습한 내용에 대하여 요약 및 정리하고 잘 이해가 되지않는 부분은 질문을 통해 이해하고 넘어갑니다

- 요약 및 정리가 끝난사람들은

  1) 데이터베이스 레코드 수정을위한 명령어를 알아보고 

      선택한 학생의 정보를 입력내용으로 수정하는 기능을 추가 해 봅니다

  2) 데이터베이스 레코드 삭제하는 명령어를 알아보고

      선택한 학생의 정보를 삭제하는 기능을 추가 해 봅니다

'📖' 카테고리의 다른 글

데이터베이스 명령어  (1) 2024.06.09
day 0607 데이터베이스 연결 프로그래밍 수정_삭제  (1) 2024.06.07
day 0604 네트워크 프로그래밍  (2) 2024.06.04
day 0603 메모장  (0) 2024.06.03
day 0531 GUI 연습  (0) 2024.05.31