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 |
댓글