IT/Java
자바에서 mysql 연습 2
인러너
2018. 5. 24. 17:30
와우 너무 힘들었다 .. remove()를 몰라서 고생했다
그리고 rs.getString()과 배열의 시작 값이 달라서 오류도 많이 났다 배열= 0 부터
그리고 rs.close() 를 마지막에 넣었는데 열려있지 않은 상태에서 닫고자 하면 오류가난다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | import java.awt.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.event.*; import java.sql.*; public class dbTest extends JFrame implements ActionListener{ JPanel p,p2; JTextField tf; JButton b1,b2,b3; Connection conn; Statement st; ResultSet rs; ResultSetMetaData md; String sql; // 텍스트필드, 버튼1,2,3 생성후 패널에 부착 , 패널,패널2 프레임에 부착 public dbTest() { setTitle("db시험"); setSize(500,600); setDefaultCloseOperation(EXIT_ON_CLOSE); p = new JPanel(); p2 = new JPanel(); p.setLayout(new GridLayout(4, 1)); tf = new JTextField(); tf.setSize(100, 20); p.add(tf); b1 = new JButton("Create 버튼"); b1.setSize(100, 20); b1.addActionListener(this); p.add(b1); b2 = new JButton("Insert 버튼"); b2.setSize(100, 20); b2.addActionListener(this); p.add(b2); b3 = new JButton("Select 버튼"); b3.setSize(100, 20); b3.addActionListener(this); p.add(b3); add("North",p); // 위치를 지정하지 않으면 보이지않음.. add("Center",p2); setVisible(true); } //sql커넥션 과정을 메소드화 시킴 public void connection() { try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample", "root", "0426"); st = conn.createStatement(); } catch(ClassNotFoundException ce) { System.out.println("driver 오류"); } catch(SQLException se) { System.out.println("sql 오류"); } catch(Exception e1) { System.out.println("그외 오류"); } } //버튼 세부기능 작성 public void actionPerformed(ActionEvent e) { try { connection(); //연결을 여기 넣어줌 .. 버튼을 클릭할때마다 rs.close() 등 이 작동되기때문에 다시 생성 을 위해서.. if(e.getSource() == b1 || e.getSource() == b2) { //사실b1 , b2는 나눌필요 없음 , 시험때문. sql = tf.getText(); st.executeUpdate(sql); System.out.println("성공"); } //테이블 작성후 패널2에 부착하는 기능 까지 있음. else if(e.getSource()== b3) { p2.removeAll(); // 다시 지워줘야지 잘나옴 아니면 밑으로 추가되거나 안나옴.. sql =tf.getText(); rs = st.executeQuery(sql); md = rs.getMetaData(); //입력값에 따른 테이블 작성을 위해 복잡하게 만듬 Object[][] ob = new Object[0][md.getColumnCount()]; String[] str = new String[md.getColumnCount()]; DefaultTableModel model ; JTable table; JScrollPane js; for(int i = 0 ; i<str.length; i++) { str[i] = md.getColumnName(i+1); } model = new DefaultTableModel(ob,str); // ob는 열 갯수를 위해, str은 열에 들어갈 이름 쉽게말하면 컬럼네임 table = new JTable(model); js = new JScrollPane(table); p2.add(js); //테이블에 행추가 while(rs.next()) { Object[] obb = new Object[md.getColumnCount()]; for(int i =0 ; i<md.getColumnCount();i++) { obb[i] = rs.getString(i+1); } model.addRow(obb);// while이 작동되는 동안 한 행씩 테이블에 입력된다 } setVisible(true); //이걸 써줘야지 버튼 누를때 마다 잘나옴. } }catch(SQLException se) { System.out.println("버튼 sql오류"); }catch(Exception e1) { System.out.println("버튼 그외오류"); }finally { if (rs != null) {try{rs.close();}catch(SQLException se) {System.out.println("rs오류");}} try{st.close();}catch(SQLException se) {System.out.println("st오류");} try{conn.close();}catch(SQLException se) {System.out.println("conn오류");} } } public static void main(String[] args) { // TODO Auto-generated method stub dbTest dt = new dbTest(); } } | cs |