본문 바로가기
오답노트

20230517 JAVA

by titlejjk 2023. 5. 17.
package test.main;

	import java.awt.BorderLayout;
	import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.AbstractButton;
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.JTextField;
	import javax.swing.table.DefaultTableModel;

import test.dto.MemberDto;
import test.util.DBConnect;

public class TestGui extends JFrame implements ActionListener{
	JTextField inputName;	
	DefaultTableModel model;
	//생성자
	public TestGui(String title) {
		super(title);
			
		//레이아웃 매니져 설정
		setLayout(new BorderLayout());	
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setBounds(100, 100, 800, 500);
		
		JLabel label1 = new JLabel("이름");
		inputName = new JTextField(20);
		
		JButton selectBtn = new JButton("조회");
		//패널에 UI를 배치하고
		JPanel panel = new JPanel();			
		panel.add(label1);
		panel.add(inputName);
		panel.add(selectBtn);
		
		selectBtn.addActionListener(this);
		//패널째로 프레임의 북쪽에 배치
		add(panel, BorderLayout.NORTH);
		panel.setBackground(Color.yellow);
			
		JTable table = new JTable();
		
		String[] colNames = {"번호", "이름", "주소"};
		
		
		//테이블에 연결할 모델객체 생성(테이블에 출력할 데이터를 여기에 추가하면 테이블에 출력된다.)
		model = new DefaultTableModel(colNames, 0);
		//모델을 테이블에 연결한다.
		table.setModel(model);
		//스크롤이 가능 하도록 테이블을 JScrollPane 에 감싼다.
		JScrollPane scroll = new JScrollPane(table);
		//테이블을 프레임의 중앙에 배치한다.
		add(scroll, BorderLayout.CENTER);
		
		
		
		
		setVisible(true);
		}
		//run 했을때 실행의 흐름이 시작되는 main 메소드
	public static void main(String[] args) {
		TestGui f = new TestGui("테스트 프레임");
	}
	@Override
	public void actionPerformed(ActionEvent e) {

	    Connection conn = null;
	    PreparedStatement pstmt = null;
	    ResultSet rs = null;
	    try {
	        // Load the Oracle JDBC driver
	        Class.forName("oracle.jdbc.driver.OracleDriver");
	        // Connect to the database
	        String url="jdbc:oracle:thin:@localhost:1521:xe";
	        
	        conn=DriverManager.getConnection(url, "scott", "tiger");
	        
	        System.out.println("디비연결");
	    }catch (Exception e1) {
			e1.printStackTrace();
		}
	    
	       
	        String strName = inputName.getText();//조회할 문자열 가져오기

	        
	    try {
	    	String memName = strName;
	    	
	    	String cmd = e.getActionCommand();
	    	
	    	if(cmd.equals("조회")) {
	    		try {
	    			String sql = "SELECT num, name, addr"
	    					+ " FROM member"
	    					+ " WHERE name = ?"
	    					+ " ORDER BY num ASC";
	    			
	    			pstmt = conn.prepareStatement(sql);
	    			
	    			pstmt.setString(1, memName);
	    			
	    			rs = pstmt.executeQuery();
	    	while(rs.next()) {
	    		int num = rs.getInt("num");
	    		String name = rs.getString("name");
	    		String addr = rs.getString("addr");
	    		
	    		Object[] row = {num, name, addr};
	    		
	    		DefaultTableModel model = new DefaultTableModel(row, 0);
	    		model.getTableModelListeners();
	    		model.setRowCount(0);
	    		
	    		model.addRow(row);
	    	}
	    	}catch(Exception e1) {
	    		e1.printStackTrace();
	    		}
	    	}
	    }catch(Exception e1) {
	    	e1.printStackTrace();
	  
	    } finally {
	        try {
	            // Close the resources
	            if (rs != null) rs.close();
	            if (pstmt != null) pstmt.close();
	            if (conn != null) conn.close();
	        } catch (Exception e1) {
	            e1.printStackTrace();
	        }
	    }
	}
}

하단 부분에 모델 연결이 안되어 있어서 위에 코드에서 모델을 전역변수로 선언해주고 아래서 연결해서 받아서 써야한다.

'오답노트' 카테고리의 다른 글

MemberDao 코드리뷰  (0) 2023.05.24
JAVA DbcpBean  (0) 2023.05.24
20230517 JavaScript 오답  (0) 2023.05.17
20230511 과제  (0) 2023.05.11
20230428 자바 배열의 객체수  (0) 2023.04.28

댓글