관리 메뉴

nkdk의 세상

자바 Language 21일째 2번 본문

My Programing/JAVA

자바 Language 21일째 2번

nkdk 2008. 3. 8. 01:17
package db;

import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.*;
import javax.swing.event.*;

public class dbScroll extends JPanel implements ActionListener {
Connection conn;
Statement stmt;
ResultSet rs;
JTextField txtBun, txtIrum, txtJik;
JButton btnf, btnp, btnn, btnl;

public dbScroll() {
init();
accDb();
}

public void init(){
txtBun=new JTextField("",3);
txtJik=new JTextField("",10);
txtIrum=new JTextField("",8);
JPanel pn1=new JPanel(); // 기본적으로 플로우 레이 아웃임.
pn1.add(txtBun);
pn1.add(txtIrum);
pn1.add(txtJik);
add("North", pn1);

btnf=new JButton("처음");
btnp=new JButton("이전");
btnn=new JButton("다음");
btnl=new JButton("마지막");
btnf.addActionListener(this);
btnn.addActionListener(this);
btnp.addActionListener(this);
btnl.addActionListener(this);

JPanel pn2=new JPanel();
pn2.add(btnf);
pn2.add(btnn);
pn2.add(btnp);
pn2.add(btnl);

add(pn2);
}

public void accDb() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch (Exception e) {
System.out.println("로딩실패: "+e);
return;
}
try {
conn=DriverManager.getConnection("jdbc:odbc:oradbs","SCOTT","TIGER");


}catch (Exception e) {
System.out.println("연결실패: "+e);
return;
}
try {
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select sawon_no, sawon_name, sawon_jik from sawon order by sawon_no";
rs=stmt.executeQuery(sql);
rs.next();
display();
}catch (Exception ex) {
JOptionPane.showMessageDialog(this, "sql오류 " +ex);
return;
}
}

public void display() {
try {
txtBun.setText(rs.getString("sawon_no"));
txtIrum.setText(rs.getString("sawon_name"));
txtJik.setText(rs.getString("sawon_jik"));
}catch (Exception e) {
JOptionPane.showMessageDialog(this, "레코드의 처음 또는 끝!!!" +e);
}
}

public static void main(String[] args) {
dbScroll ds=new dbScroll();
JFrame frame=new JFrame(); // 액자를 걸수 있는 큰 벽이고 jframe은 컨테이너를 이용한다.

//frame.getContentPane().add(ds); // 컨텐트 페인을 이용해서 벽에 건다 . center 라는 말이 생략된거랑 마찬가지다.
frame.add(ds); // 위에것과 비슷하다.
frame.setBounds(200,200,300,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent ae) {
try{
if (ae.getActionCommand().equals("처음")) rs.first();
else if (ae.getActionCommand().equals("이전")) rs.previous();
else if (ae.getActionCommand().equals("다음")) rs.next();
else if (ae.getActionCommand().equals("마지막")) rs.last();
display();
} catch (SQLException e) {
e.printStackTrace();
}
}
}