갈림길 이정표

[java] MVC (Model View Controller) 본문

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

[java] MVC (Model View Controller)

이몽뇽 2020. 8. 7. 08:50
package pack1;

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

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class DbTest7Table extends JFrame{
	//(!) 접근 지정자 쓰기 (!)
	String [][] datas = new String[0][5];
	String [] title = {"코드","상품명","수량","단가","금액"};
	DefaultTableModel model;	//model
	JTable table;	//MVC(Model View Controller) 패턴 사용 - viewer(보여주는 역할)
	JLabel lblCount;
	
	Connection conn;
	PreparedStatement pstmt;
	ResultSet rs;
	
	
	public DbTest7Table() {
		setTitle("테이블 연습");
		
		
		layInit();
		accDb();
		
		setBounds(300, 300, 300, 250);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	private void layInit() {
		model = new DefaultTableModel(datas, title);	//데이터는 model이 갖고 있음 (데이터, 칼럼제목)
		table = new JTable(model);						//데이터 보여줄 거임 (viewer)
		JScrollPane scroll = new JScrollPane(table);	//table에 스크롤 장착! (데이터 양이 많을 때)
		
		lblCount = new JLabel("건수: 0");
		
		add("Center", scroll);
		add("South", lblCount);
		
	}
	
	private void accDb() {
		try {
			Class.forName("org.mariadb.jdbc.Driver");	//mariadb-java-client-1.3.6.jar의 Driver class 사용
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "369369");
			
			pstmt = conn.prepareStatement("SELECT * FROM sangdata");
			rs = pstmt.executeQuery();
			int count = 0;
			while(rs.next()) {
				String code = rs.getString("code");
				String sang = rs.getString("sang");
				String su = rs.getString("su");
				String dan = rs.getString("dan");
				int price = rs.getInt("su") * rs.getInt("dan");
				String [] temp = {code, sang, su, dan, Integer.toString(price)};	//모든 데이터 타입이 같아야 함
				model.addRow(temp);
				count++;
			}
			lblCount.setText("건수: " + count);
		} catch (Exception e) {		//프로그래머를 위한 에러 메세지
			System.out.println("accDb err: " + e);
		} finally {
			try {
				if(rs != null) rs.close();
				if(pstmt != null) pstmt.close();
				if(conn != null) conn.close();
				
			} catch (Exception e2) {

			}
		}
	}
	
	public static void main(String[] args) {
		new DbTest7Table();
	}

}
Comments