카테고리 없음

210907_

요옫 2021. 9. 7. 14:20

import java.awt.Color;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Vector;

 

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JRadioButton;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;

 

 

import day0903.DbConnTest;

 

public class sawonDbSwing extends JFrame implements ActionListener, ItemListener{

 

//add,delete테이블 생성 안 하고 추가,삭제

 

Container cp;

DbConnTest db=new DbConnTest();

 

DefaultTableModel model;

JTable table;

JButton btnDel,btnAdd;

 

JRadioButton[]rb=new JRadioButton[6];  //액션리스너도 되지만 대부분 itemlistener로 함

 

 

public sawonDbSwing() {

super("사원관리");

 

this.setBounds(800, 100, 700, 500);

this.initDesign();

 

//테이블 생성후 db로부터 데이터 가져오기

this.getSawonTable(1);  //전체검색이니까 1

 

this.getContentPane().setBackground(Color.white);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setVisible(true);

}

 

 

//디자인

public void initDesign() {

 

this.setLayout(null);

 

//테이블 추가

String []title= {"No.","사번","이름","성별","부서","급여"};

 

model=new DefaultTableModel(title,0);  //제목만 넣고 행 개수는 일단 0으로 추가

table=new JTable(model);

JScrollPane js=new JScrollPane(table);

js.setBounds(10, 100, 670, 350);

this.add(js);

 

 

//버튼

btnAdd=new JButton("추가");

btnAdd.setBounds(130, 10, 100, 30);

btnAdd.addActionListener(this);

this.add(btnAdd);

 

btnDel=new JButton("삭제");

btnDel.setBounds(10, 10, 100, 30);

btnDel.addActionListener(this);

this.add(btnDel);

 

//라디오버튼

ButtonGroup bg=new ButtonGroup();

//검색조건:1.전체 2.여자 3.남자 4.교육부 5.홍보부 6.관리부

String[]rb_label= {"전체","여자","남자","교육부","홍보부","관리부"};

 

int xpos=10;

 

for(int i=0;i<rb_label.length;i++)

{

//라디오버튼생(0번을 기본선택)

rb[i]=new JRadioButton(rb_label[i], i==0?true:false);  //0이면 true, 그렇지 않으면 false

rb[i].setBounds(xpos, 50, 90, 30);

rb[i].setOpaque(false);

 

//각각의 버튼에 이벤트

rb[i].addItemListener(this);

 

//라디오버튼을 그룹에 추가

bg.add(rb[i]);

this.add(rb[i]);

 

xpos+=100;  //xpos 값 증가

}

}

 

 

//db데이터 가져와서 출력

public void getSawonTable(int select) {  //선택할 수 있는 select값을 인자로 남김

 

Connection conn=db.getCloudOracle();

PreparedStatement pstmt=null;

ResultSet rs=null;

 

String sql="";

 

//검색조건:1.전체 2.여자 3.남자 4.교육부 5.홍보부 6.관리부

if(select==1)

sql="select ROWNUM no, num,name,gender,buseo,pay from sawon";

else if(select==2)

sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where gender='여자'";

else if(select==3)

sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where gender='남자'";

else if(select==4)

sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where buseo='교육부'";

else if(select==5)

sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where buseo='홍보부'";

else if(select==6)

sql="select ROWNUM no, num,name,gender,buseo,pay from sawon where buseo='관리부'";

 

 

try {

pstmt=conn.prepareStatement(sql);

rs=pstmt.executeQuery();

 

model.setRowCount(0);  //행 개수 0으로 초기화

 

while(rs.next())

{

//테이블에 추가할 벡터 선언후 데이터 추가

Vector<String>data=new Vector<String>();

data.add(rs.getString("no"));

data.add(rs.getString("num"));

data.add(rs.getString("name"));

data.add(rs.getString("gender"));

data.add(rs.getString("buseo"));

data.add(rs.getString("pay"));

 

//벡터의 데이터를 행으로 추가

model.addRow(data);

}

} catch (SQLException e) {

 

} finally {

db.dbClose(rs, pstmt, conn);

}

}

 

 

//액션이벤트

@Override

public void actionPerformed(ActionEvent e) {

Object ob=e.getSource();

 

Connection conn=db.getCloudOracle();

PreparedStatement pstmt=null;

 

String sql="";

 

//삭제

if(ob==btnDel)

{

//행번호얻기, 선택 안 했을 때 -1반환

int row=table.getSelectedRow();

System.out.println(row);  //확인용

 

//선택 안 했을 때

if(row==-1)

{

JOptionPane.showMessageDialog(this, "삭제할 행 선택");

return;  //메서드종료

}

 

//선택한 행의 num 얻기

String num=(String)model.getValueAt(row, 1);

System.out.println(num);  //확인용

 

//위의 num에 해당하는 db삭제후 테이블 다시 출력

sql="delete from sawon where num=?";

try {

pstmt=conn.prepareStatement(sql);

 

//?바인딩

pstmt.setString(1, num);

 

//실행

pstmt.execute();

 

//전체데이터 다시 불러오기

this.getSawonTable(1);  //전체검색이니까 1

//라디오버튼도 0번 전체 선택

rb[0].setSelected(true);

 

} catch (SQLException e1) {

 

} finally {

db.dbClose(pstmt, conn);

}

 

//추가

} else if (ob==btnAdd)

{

//이름,성별,부서,급여 묻기..inputdiallog

 

String name=JOptionPane.showInputDialog("추가할 이름 입력");

String gender=JOptionPane.showInputDialog("추가할 성별 입력");

String buseo=JOptionPane.showInputDialog("추가할 부서 입력");

String pay=JOptionPane.showInputDialog("추가할 급여 입력");

 

sql="insert into sawon values(seq_sawon.nextval,?,?,?,?)";

 

try {

pstmt=conn.prepareStatement(sql);

 

pstmt.setString(1, name);

pstmt.setString(2, gender);

pstmt.setString(3, buseo);

pstmt.setString(4, pay);

 

pstmt.execute();

 

this.getSawonTable(1);  //전체검색이니까 1

//라디오버튼도 0번 전체 선택

rb[0].setSelected(true);

 

} catch (SQLException e1) {

 

} finally {

db.dbClose(pstmt, conn);

}

}

}

 

 

 

//아이템리스너..라디오버튼이벤트

@Override

public void itemStateChanged(ItemEvent e) {

//라디오버튼 누를 때의 검색..배열

Object ob=e.getSource();

 

 

 

for(int i=0;i<rb.length;i++)

{

if(rb[i]==ob)

this.getSawonTable(i+1);

}

}

 

 

public static void main(String[] args) {

new sawonDbSwing();

}

}

조회

 

삭제
교육부만 조회