ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 210906_jframe,actionlistener
    JAVA 2021. 9. 7. 10:23

    import java.awt.Color;

    import java.awt.Container;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.sql.Connection;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.util.Vector;

     

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    import javax.swing.table.DefaultTableModel;

     

    import quiz.DbConn;

     

    public class SwingStuDB extends JFrame  implements ActionListener{

     

    DbConn db=new DbConn();

     

    Container cp;

    DefaultTableModel model;

    JTable table;

    JButton btnAdd,btnUpdate,btnDel;

     

    //AddFrame생성

    AddFrame addFrame=new AddFrame();

     

     

    public SwingStuDB() {

    super("스윙DB테이블");

     

    cp=this.getContentPane();

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    this.setBounds(200, 100, 500, 400);

    cp.setBackground(new Color(255,255,200));

    this.initDesign();

    this.setVisible(true);

     

    }

     

    //테이블에 출력하는 메소드...1

    public void tablewrite()

    {

    //테이블초기화

    model.setRowCount(0);

     

    Connection conn=null;

    PreparedStatement pstmt=null;

    ResultSet rs=null;

     

    String sql="select * from student order by num asc";

     

    conn=db.getCloudOracle();

    try {

    pstmt=conn.prepareStatement(sql);

    rs=pstmt.executeQuery();

     

    while(rs.next())

    {

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

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

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

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

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

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

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

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

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

     

    //테이블에 추가

    model.addRow(data);

    }

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }finally {

    db.dbClose(rs, pstmt, conn);

    }

     

     

    }

     

    //insert메서드….2

    public void insertData()

    {

    String name=addFrame.tfName.getText();

    String java=addFrame.tfJava.getText();

    String jsp=addFrame.tfJsp.getText();

    String spring=addFrame.tfSpring.getText();

    String ban=(String)addFrame.cbBan.getSelectedItem();

     

    int tot=Integer.parseInt(java)+Integer.parseInt(jsp)+Integer.parseInt(spring);

    double avg=tot/3.0;

     

    String sql="insert into student values(seq_test.nextval,?,?,?,?,?,?,?)";

     

    Connection conn=null;

    PreparedStatement pstmt=null;

     

    conn=db.getCloudOracle();

    try {

    pstmt=conn.prepareStatement(sql);

     

    pstmt.setString(1, name);

    pstmt.setString(2, java);

    pstmt.setString(3, jsp);

    pstmt.setString(4, spring);

    pstmt.setInt(5, tot);

    pstmt.setDouble(6, avg);

    pstmt.setString(7, ban);

     

    pstmt.execute();

     

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }finally {

    db.dbClose(pstmt, conn);

    }

    }

     

    //삭제 메서드

    public void deleteData(String num)

    {

     

    System.out.println("nim="+num);

    //sql문

    String sql="delete from student where num="+num;

     

    //db연결

    Connection conn=null;

    Statement stmt=null;

     

    conn=db.getCloudOracle();

    try {

    stmt=conn.createStatement();

    int n= stmt.executeUpdate(sql);

     

    //sql문 실행후 해당번호없을때 메세지,삭제되면 tablewrite다시호출

    if(n==0)

    JOptionPane.showMessageDialog(this, "없는데이타 번호입니다");

    else

    tablewrite();

     

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }finally {

    db.dbClose(stmt, conn);

    }

    }

     

    public void initDesign()

    {

    String []title= {"번호","이름","반","Java","Jsp","Spring","총점","평균"};

    model=new DefaultTableModel(title, 0);

    table=new JTable(model);

    this.add("Center",new JScrollPane(table));

     

    //테이블에 전체데이타 출력 

    tablewrite();

     

    JPanel pTop=new JPanel();

    this.add("North", pTop);

     

    btnAdd=new JButton("추가");

    btnAdd.addActionListener(this);  //메인add액션

    pTop.add(btnAdd);

     

    btnDel=new JButton("삭제");

    btnDel.addActionListener(this);  //메인 del액

    pTop.add(btnDel);

     

    btnUpdate=new JButton("수정");

    btnUpdate.addActionListener(this); //메인update액션 추가

    pTop.add(btnUpdate);

     

    addFrame.btnAdd.addActionListener(this); //AddFrame의 추가버튼

    }

     

    @Override

    public void actionPerformed(ActionEvent e) {

     

    Object ob=e.getSource();

     

    if(ob==btnAdd)

    {

    addFrame.setVisible(true);

    }else if(ob==addFrame.btnAdd)

    {

    //입력데이타 읽어와서 db추가

    insertData();

    //테이블 다시출력

    this.tablewrite();

    //초기화

    addFrame.tfName.setText("");

    addFrame.tfJava.setText("");

    addFrame.tfJsp.setText("");

    addFrame.tfSpring.setText("");

    addFrame.tfName.requestFocus();

     

    //추가폼은 사라져야

    addFrame.setVisible(false);

    }

     

    else if(ob==btnDel)

    {

    String num=JOptionPane.showInputDialog("삭제할 데이타의 번호를 입력해 주세요");

    deleteData(num);  //데이타 삭제

    }else if(ob==btnUpdate)

    {

    System.out.println("update");

    }

    }

     

    public static void main(String[] args) {

     

    new SwingStuDB();

    }

    }

     

     

    AddFrame

    package day0906;

     

    import java.awt.Color;

    import java.awt.Container;

     

    import javax.swing.JButton;

    import javax.swing.JComboBox;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JTextField;

     

    public class AddFrame extends JFrame{

     

    Container cp;

    JTextField tfName,tfJava,tfJsp,tfSpring;

    JComboBox<String> cbBan;

    JButton btnAdd;

     

    public AddFrame() {

    super("데이타입력폼");

    cp=this.getContentPane();

    //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    this.setBounds(200, 100, 200, 250);

    cp.setBackground(new Color(255,255,200));

    this.initDesign();

    //this.setVisible(true);

    }

     

    public void initDesign()

    {

    this.setLayout(null);

    JLabel title1=new JLabel("이름");

    JLabel title2=new JLabel("반");

    JLabel title3=new JLabel("JAVA");

    JLabel title4=new JLabel("JSP");

    JLabel title5=new JLabel("SPRING");

     

    title1.setBounds(30, 10, 50, 30);

    this.add(title1);

    title2.setBounds(30, 40, 50, 30);

    this.add(title2);

    title3.setBounds(30, 70, 50, 30);

    this.add(title3);

    title4.setBounds(30, 100, 50, 30);

    this.add(title4);

    title5.setBounds(30, 130, 50, 30);

    this.add(title5);

     

     

    tfName=new JTextField(4);

    tfJava=new JTextField(3);

    tfJsp=new JTextField(3);

    tfSpring=new JTextField(3);

     

    String[] ban= {"a반","b반","c반","d반"};

    cbBan=new JComboBox<String>(ban);

     

     

    tfName.setBounds(100, 15, 70, 25);

    this.add(tfName);

    cbBan.setBounds(100, 45, 70, 25);

    this.add(cbBan);

    tfJava.setBounds(100, 75, 70, 25);

    this.add(tfJava);

    tfJsp.setBounds(100, 105, 70, 25);

    this.add(tfJsp);

    tfSpring.setBounds(100, 135, 70, 25);

    this.add(tfSpring);

     

    btnAdd=new JButton("추가");

    btnAdd.setBounds(70, 170, 60, 20);

    this.add(btnAdd);

    }

     

    // public static void main(String[] args) {

    // new AddFrame();

    // }   //디자인 확인후 주석...메인에서 호출할것이므로

    }

     

     

    UpdateFrame_수정폼_AddFrame 복사해서 변수수정

     

    package day0906;

     

    import java.awt.Color;

    import java.awt.Container;

     

    import javax.swing.JButton;

    import javax.swing.JComboBox;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JTextField;

     

    public class UpdateFrame extends JFrame{

     

    Container cp;

    JTextField tfName,tfJava,tfJsp,tfSpring;

    JComboBox<String> cbBan;

    JButton btnMod;  //수정후 메인으로 전송할버튼

    String num;  //수정할 번호

     

    public UpdateFrame() {

    super("수정폼");

    cp=this.getContentPane();

    //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    this.setBounds(200, 100, 200, 250);

    cp.setBackground(new Color(155,155,200));

    this.initDesign();

    //this.setVisible(true);

    }

     

    public void initDesign()

    {

    this.setLayout(null);

    JLabel title1=new JLabel("이름");

    JLabel title2=new JLabel("반");

    JLabel title3=new JLabel("JAVA");

    JLabel title4=new JLabel("JSP");

    JLabel title5=new JLabel("SPRING");

     

    title1.setBounds(30, 10, 50, 30);

    this.add(title1);

    title2.setBounds(30, 40, 50, 30);

    this.add(title2);

    title3.setBounds(30, 70, 50, 30);

    this.add(title3);

    title4.setBounds(30, 100, 50, 30);

    this.add(title4);

    title5.setBounds(30, 130, 50, 30);

    this.add(title5);

     

    tfName=new JTextField(4);

    tfJava=new JTextField(3);

    tfJsp=new JTextField(3);

    tfSpring=new JTextField(3);

     

    String[] ban= {"a반","b반","c반","d반"};

    cbBan=new JComboBox<String>(ban);

     

    tfName.setBounds(100, 15, 70, 25);

    this.add(tfName);

    cbBan.setBounds(100, 45, 70, 25);

    this.add(cbBan);

    tfJava.setBounds(100, 75, 70, 25);

    this.add(tfJava);

    tfJsp.setBounds(100, 105, 70, 25);

    this.add(tfJsp);

    tfSpring.setBounds(100, 135, 70, 25);

    this.add(tfSpring);

     

    btnMod=new JButton("수정");

    btnMod.setBounds(70, 170, 60, 20);

    this.add(btnMod);

    }

     

    // public static void main(String[] args) {

    // new UpdateFrame();

    // }

    }



    Q. 문제

    수정버튼 누르면 몇번을 수정하시겠습니까?

    4번누르면 4번이 가지고 있는 데이타를 UpdateFrame 창에 표시하여 열린다

    데이타 수정후 수정버튼 누르면 수정폼 사라지고 메인창에 수정된 내용이 보여야 한다

     

    캡쳐 2개_수정전,다이얼로그창에 번호입력한것,수정된거 캡쳐

     

    카페:  0906_스윙jdbc_홍길동

     

    }else if(ob==btnUpdate)

    {

    //System.out.println("update");

    String num=JOptionPane.showInputDialog("수정할 데이터의 번호를 입력하세요");

     

    String sql="select * from student where num="+num;

     

    Connection conn=null;

    Statement stmt=null;

    ResultSet rs=null;

     

    conn=db.getCloudOracle();

    try {

    stmt=conn.createStatement();

    rs=stmt.executeQuery(sql);

     

    //전체데이타 조회는 while,하나의 데이터 조회는 if

    if(rs.next())//데이타가 있는경우

    {

    uFrame.num=num; //프레임에는 없으나 반드시 해당num값 넘긴다

    uFrame.tfName.setText(rs.getString("name"));

    uFrame.tfJava.setText(rs.getString("java"));

    uFrame.tfJsp.setText(rs.getString("jsp"));

    uFrame.tfSpring.setText(rs.getString("spring"));

    uFrame.cbBan.setSelectedItem(rs.getString("ban"));

     

    uFrame.setVisible(true);

    }else

    {

    //데이타가 없는경우

    JOptionPane.showMessageDialog(this, "해당번호는 없는 데이타 입니다");

    }

     

    } catch (SQLException e1) {

    // TODO Auto-generated catch block

    e1.printStackTrace();

    }finally {

    db.dbClose(rs, stmt, conn);

    }

    //요기까지 한후 메인의 수정창을 누르면 해당num의 데이터가 수정창에 표기되는지 확인후 update한다

    }else if(ob==uFrame.btnMod)

    {

    updateData();

    tablewrite();

    uFrame.setVisible(false);

    }

    }

     

    //update

    public void updateData()

    {

    String num=uFrame.num;

    String name=uFrame.tfName.getText();

    String java=uFrame.tfJava.getText();

    String jsp=uFrame.tfJsp.getText();

    String spring=uFrame.tfSpring.getText();

    String ban=(String)uFrame.cbBan.getSelectedItem();

     

    int tot=Integer.parseInt(java)+Integer.parseInt(jsp)+Integer.parseInt(spring);

    double avg=tot/3.0;

     

    String sql="update student set "

    + "name=?,java=?,jsp=?,spring=?,total="+tot+",average="+avg+",ban=? "

    + "where num="+num;

     

    System.out.println(sql);

     

    Connection conn=null;

    PreparedStatement pstmt=null;

     

    conn=db.getCloudOracle();

    try {

    pstmt=conn.prepareStatement(sql);

    pstmt.setString(1, name);

    pstmt.setString(2, java);

    pstmt.setString(3, jsp);

    pstmt.setString(4, spring);

    pstmt.setString(5, ban);

     

    pstmt.execute();

    } catch (SQLException e) {

    }finally {

    db.dbClose(pstmt, conn);

    }

    }

     

    댓글

Designed by Tistory.