갈림길 이정표

[java] DB 접속 메소드 통해 프레임 창에 띄우기 본문

Programming Language/Java 마스터하기(feat. 이것이 자바다)

[java] DB 접속 메소드 통해 프레임 창에 띄우기

이몽뇽 2020. 8. 5. 00:37
package pack1;

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 Dbtest3GUI extends JFrame implements ActionListener{
	JButton btnA = new JButton("전체");
	JButton btnB = new JButton("남자");
	JButton btnC = new JButton("여자");
	JTextArea txtResult = new JTextArea();
	
	Connection conn;
	Statement stmt;
	ResultSet rs;
	
	public Dbtest3GUI() {
		//sangdata를 Frame으로 출력
		setTitle("고객 출력");
		
		
		layInit();	//레이아웃 디자인
		accDb();	//DB 접속
		
		setBounds(300, 300, 300, 300);
		setVisible(true);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	private void layInit() {
		JPanel panel = new JPanel(); //기본값 : flow layout
		panel.add(btnA);
		panel.add(btnB);
		panel.add(btnC);
		
		txtResult.setEditable(false); //false = read Only
		JScrollPane scrollpane = new JScrollPane(txtResult);
		
		add("North", panel);
		add("Center", scrollpane);
		
		btnA.addActionListener(this);
		btnB.addActionListener(this);
		btnC.addActionListener(this);
	}
	
	private void accDb() {
		try {
			Class.forName("org.mariadb.jdbc.Driver");	//딱 한번 연결  (필요할 때만 연결해줘야 돼)
			
		} catch (Exception e) {
			System.out.println("err: " + e);
		}
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
//		System.out.println("a");
		try {
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "369369");
			stmt = conn.createStatement();
			String sql = "SELECT gogek_no, gogek_name, gogek_jumin FROM gogek";
			
			if(e.getSource() == btnA) {
//				System.out.println("전체");
			} else if(e.getSource() == btnB) {
//				System.out.println("남");
				sql += " WHERE gogek_jumin like '%-1%'"; //SUBSTR(gogek_jumin,8,1)=1 해도 됨
					// 한번 띄어쓰기! (SQL문에서 인식 하려면 띄어쓰기 중요)
			} else if(e.getSource() == btnC) {
//				System.out.println("여");
				sql += " WHERE gogek_jumin like '%-2%'";	//like 문자열 비교
			}
//			System.out.println(sql); //[중요!] (java 기능  수행 전) SQL문 확인
			
			txtResult.setText(""); //또는 = null [초기화 작업 - 버튼 누를 때마다 지움]
			int count = 0;
			rs = stmt.executeQuery(sql);
			
			txtResult.setText("고객번호\t고객명\t주민번호\n");
			while(rs.next()) {
//				System.out.println(rs.getString(1));
				String ss = rs.getString("gogek_no") + "\t" + 
						rs.getString("gogek_name") + "\t" + 
						rs.getString("gogek_jumin") + "\n";
				txtResult.append(ss);
				count += 1;
			}
			txtResult.append("인원수 : " + count + "명");
		} catch (Exception e2) {
			System.out.println("actionPerformed err : " + e2);
		} finally {
			try {
				if (rs != null)
					rs.close();
				if (rs != null)
					rs.close();
				if (stmt != null)
					stmt.close();
				if (conn != null)
					conn.close();	//DB 연결 끊어 버려
			} catch (Exception e3) {
				
			}
		}
	}
	
	
	public static void main(String[] args) {
		new Dbtest3GUI();
	}

}
Comments