관리 메뉴

nkdk의 세상

자바 Language 20일째 몬다이 본문

My Programing/JAVA

자바 Language 20일째 몬다이

nkdk 2008. 3. 8. 01:16
// 다른 소스와 연동되어져서 만들었습니다.
// 입력하는 화면을 구성하였습니다.
// 다른 문제들과 함께입니다.

package db;

import java.awt.*;

import javax.swing.*;
import java.sql.*;
import java.awt.event.*;

public class dbMon1 extends JPanel implements ActionListener, ItemListener{
Connection conn;
Statement stmt;
ResultSet rs;
int sex;
String tost;

JButton btn1=new JButton("전체"), btn2=new JButton("남자"), btn3=new JButton("여자");
JTextArea jta=new JTextArea("",40,40);

public dbMon1() {
this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
JPanel pn=new JPanel();
pn.setLayout(new GridLayout(1,3));
pn.add(btn1);
pn.add(btn2);
pn.add(btn3);
JPanel pn2=new JPanel();
pn2.add(jta);
this.add("Center",pn);
this.add("Center",pn2);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
}

public void connect(int is) {
try{
// 드라이버 로딩
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (Exception ex) {
System.out.println("로더 실패:"+ex.getMessage());
ex.printStackTrace();
}
try{ // 이 try 문에대해서는 select문만 사용할 시에는 사용하지 않아도 된다.
// DB연결 //odbc에서 추가 시켜 준다
conn=DriverManager.getConnection("jdbc:odbc:oradbs","scott","tiger");

// Transaction process
conn.setAutoCommit(false); // 기본은 true 로 되어 있다
try {
String sql="";
// Sql문 처리
stmt=conn.createStatement();

// 해당 문자를 sql 문장에서 문자로 넣어 버린다. 자바에서는 nextval을 사용해야 한다
//stmt.executeUpdate("insert into sangdata values(code_seq nextval, '마우스',100,2500)");

// select문 사용
// 고객넘버, 고객네임, 고객전번, 고객주민, 고객담사번

if (is==1) {
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_damsano from gogek";
}
if (is==2) {
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_damsano from gogek where substr(gogek_jumin,8,1)='1'";
}
if (is==3) {
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex,gogek_damsano from gogek where substr(gogek_jumin,8,1)='2'";
}
rs=stmt.executeQuery(sql);

String no="";
String name="";
String tel="";
String sex="";
String damsano="";


// 순방향으로 이동한다.
// Db자료의 자료를 바로 보는 법은 없다. 내가 보이게 되는 화면을 가지고 자료를 가지고 오게 된다.
jta.setText("");
while(rs.next()) {
no=rs.getString("gogek_no");
name=rs.getString("gogek_name");
tel=rs.getString("gogek_tel");
sex=rs.getString("sex");
damsano=rs.getString("gogek_damsano");
if (sex.equals("1"))
sex = "남자"; else sex="여자";
jta.append(no+" "+name+" "+tel+" "+sex+" "+damsano+"\n"); // 값을 추가 시킨다.
}
conn.commit();
}catch (SQLException e1x) {
System.out.println("문제 발생"+e1x);
conn.rollback();
}finally{
conn.setAutoCommit(true);
rs.close(); stmt.close(); conn.close();
}
}catch (Exception ex) {
System.out.println("오류"+ex.getMessage());
}
}

public Dimension getPreferredSize(){
return new Dimension(500,400);
}

public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btn1)) // 전체 선택
connect(1);
if(e.getSource().equals(btn2)) // 남자 선택시
connect(2);
if(e.getSource().equals(btn3)) // 여자 선택시
connect(3);
}

public void itemStateChanged(ItemEvent e) {

}

}

package db;

import java.awt.*;

import javax.swing.*;
import java.sql.*;
import java.awt.event.*;

public class dbMon2 extends JPanel implements ActionListener, ItemListener{
Connection conn;
Statement stmt;
ResultSet rs;
int sex;
String tost;
CheckboxGroup group;
private Checkbox rad1, rad2, rad3, rad4;
JButton btn1=new JButton("전체"), btn2=new JButton("남자"), btn3=new JButton("여자");
JTextArea jta=new JTextArea("",40,40);

public dbMon2() {
this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
JPanel pn=new JPanel();
pn.setLayout(new GridLayout(1,3));
group = new CheckboxGroup(); // awt에서는 라디오 버튼 같은 것을 그룹화 시켜주어야 한다.
rad1 = new Checkbox("전체", group, true);
rad2 = new Checkbox("30대", group, false);
rad3 = new Checkbox("40대", group, false);
rad4 = new Checkbox("기타", group, false);
rad1.addItemListener(this);
rad2.addItemListener(this);
rad3.addItemListener(this);
rad4.addItemListener(this);

pn.add(rad1);
pn.add(rad2);
pn.add(rad3);
pn.add(rad4);

JPanel pn2=new JPanel();
pn2.add(jta);
this.add("Center",pn);
this.add("Center",pn2);
}

public static void main(String[] args) {
JFrame frame=new JFrame("문제2번"); // 포함 관계로 하려 한다.
dbMon2 sw=new dbMon2();
frame.getContentPane().add(sw,"Center");
// 크기를 잡아서 보이게 해 주어야 한다.
frame.setSize(sw.getPreferredSize());
frame.setLocation(200,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 기본적인 종료 방식
}

public void connect(int is) {
try{
// 드라이버 로딩
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (Exception ex) {
System.out.println("로더 실패:"+ex.getMessage());
ex.printStackTrace();
}
try{ // 이 try 문에대해서는 select문만 사용할 시에는 사용하지 않아도 된다.
// DB연결 //odbc에서 추가 시켜 준다
conn=DriverManager.getConnection("jdbc:odbc:oradbs","scott","tiger");

// Transaction process
conn.setAutoCommit(false); // 기본은 true 로 되어 있다
try {
String sql="";
// Sql문 처리
stmt=conn.createStatement();

// 해당 문자를 sql 문장에서 문자로 넣어 버린다. 자바에서는 nextval을 사용해야 한다
//stmt.executeUpdate("insert into sangdata values(code_seq nextval, '마우스',100,2500)");

// select문 사용
// 고객넘버, 고객네임, 고객전번, 고객주민, 고객담사번

if (is==1) {
sql="select gogek_no, gogek_name, gogek_tel, gogek_jumin from gogek";
}
if (is==2) {
sql="select gogek_no, gogek_name, gogek_tel, gogek_jumin from gogek where (2007-1900-substr(gogek_jumin,1,2)) < 40 and (2007-1900-substr(gogek_jumin,1,2)) >= 30";
}
if (is==3) {
sql="select gogek_no, gogek_name, gogek_tel, gogek_jumin from gogek where (2007-1900-substr(gogek_jumin,1,2)) < 50 and (2007-1900-substr(gogek_jumin,1,2)) >= 40";
}
if (is==4) {
sql="select gogek_no, gogek_name, gogek_tel, gogek_jumin from gogek where (2007-1900-substr(gogek_jumin,1,2)) >= 50 or (2007-1900-substr(gogek_jumin,1,2)) < 30";
}
rs=stmt.executeQuery(sql);

String no="";
String name="";
String tel="";
String jumin="";


// 순방향으로 이동한다.
// Db자료의 자료를 바로 보는 법은 없다. 내가 보이게 되는 화면을 가지고 자료를 가지고 오게 된다.
jta.setText("");
while(rs.next()) {
no=rs.getString("gogek_no");
name=rs.getString("gogek_name");
tel=rs.getString("gogek_tel");
jumin=rs.getString("gogek_jumin");
jta.append(no+" "+name+" "+tel+" "+jumin+"\n"); // 값을 추가 시킨다.
}
conn.commit();
}catch (SQLException e1x) {
System.out.println("문제 발생"+e1x);
conn.rollback();
}finally{
conn.setAutoCommit(true);
rs.close(); stmt.close(); conn.close();
}
}catch (Exception ex) {
System.out.println("오류"+ex.getMessage());
}
}

public Dimension getPreferredSize(){
return new Dimension(500,400);
}

public void actionPerformed(ActionEvent e) {

}

public void itemStateChanged(ItemEvent e) {
if (e.getSource() == rad1)
connect(1);
else if (e.getSource() == rad2)
connect(2);
else if (e.getSource() == rad3)
connect(3);
else if (e.getSource() == rad4)
connect(4);

}

}

package db;

import java.awt.*;

import javax.swing.*;

import java.sql.*;
import java.awt.event.*;

public class dbMon3 extends JPanel implements ActionListener, ItemListener{
Connection conn;
Statement stmt;
ResultSet rs;
JLabel jl1, jl2;
int sexs=1, nai=1;
Checkbox jc1;
Checkbox jc2;
String tost;
CheckboxGroup group;
private Checkbox rad1, rad2, rad3;
JButton btn=new JButton("전체");
JTextArea jta=new JTextArea("",40,40);


public dbMon3() {
jl1 = new JLabel("성별");
jl2 = new JLabel("나이");
this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
JPanel pn3=new JPanel();
JPanel pn4=new JPanel();
JPanel pn=new JPanel();
JPanel pn5=new JPanel();
pn3.setLayout(new BoxLayout(pn3,BoxLayout.X_AXIS));
pn4.setLayout(new GridLayout(2,1));
pn.setLayout(new GridLayout(1,3));

pn3.add(btn);
pn3.add(pn4);

pn4.add(pn);
pn4.add(pn5);

jc1=new Checkbox("30대", true);
jc2=new Checkbox("40대", false);
jc1.addItemListener(this);
jc2.addItemListener(this);
btn.addActionListener(this);

pn5.add("Left", jl2);
pn5.add("Center", jc1);
pn5.add("Center", jc2);


group = new CheckboxGroup(); // awt에서는 라디오 버튼 같은 것을 그룹화 시켜주어야 한다.
rad1 = new Checkbox("전부", group, true);
rad2 = new Checkbox("남", group, false);
rad3 = new Checkbox("여", group, false);
rad1.addItemListener(this);
rad2.addItemListener(this);
rad3.addItemListener(this);

pn.add("Left", jl1);
pn.add("Center", rad1);
pn.add("Center",rad2);
pn.add("Center",rad3);

JPanel pn2=new JPanel();
pn2.add(jta);
this.add("Center",pn3);
this.add("Center",pn2);
}

public void connect(int is) {
try{
// 드라이버 로딩
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (Exception ex) {
System.out.println("로더 실패:"+ex.getMessage());
ex.printStackTrace();
}
try{ // 이 try 문에대해서는 select문만 사용할 시에는 사용하지 않아도 된다.
// DB연결 //odbc에서 추가 시켜 준다
conn=DriverManager.getConnection("jdbc:odbc:oradbs","scott","tiger");

// Transaction process
conn.setAutoCommit(false); // 기본은 true 로 되어 있다
try {
String sql="";
// Sql문 처리
stmt=conn.createStatement();

// 해당 문자를 sql 문장에서 문자로 넣어 버린다. 자바에서는 nextval을 사용해야 한다
//stmt.executeUpdate("insert into sangdata values(code_seq nextval, '마우스',100,2500)");

// select문 사용
// 고객넘버, 고객네임, 고객전번, 고객주민, 고객담사번

if(sexs==1)
if (nai==1)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek where (2007-1900-substr(gogek_jumin,1,2)) < 40 and (2007-1900-substr(gogek_jumin,1,2)) >= 30";
else if (nai==2)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek where (2007-1900-substr(gogek_jumin,1,2)) < 50 and (2007-1900-substr(gogek_jumin,1,2)) >= 40";
else if (nai==3)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek where ((2007-1900-substr(gogek_jumin,1,2)) < 50 and (2007-1900-substr(gogek_jumin,1,2)) >= 40) or ((2007-1900-substr(gogek_jumin,1,2)) < 40 and (2007-1900-substr(gogek_jumin,1,2)) >= 30)";

if(sexs==2)
if (nai==1 || nai == 2 || nai == 3)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek where (2007-1900-substr(gogek_jumin,1,2)) < 40 and (2007-1900-substr(gogek_jumin,1,2)) >= 30 and substr(gogek_jumin,8,1)=1";
else if (nai==2)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek where (2007-1900-substr(gogek_jumin,1,2)) < 50 and (2007-1900-substr(gogek_jumin,1,2)) >= 40 and substr(gogek_jumin,8,1)=1";
else if (nai==3)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek where substr(gogek_jumin,8,1)=1 and ((2007-1900-substr(gogek_jumin,1,2)) < 50 and (2007-1900-substr(gogek_jumin,1,2)) >= 40) or ((2007-1900-substr(gogek_jumin,1,2)) < 40 and (2007-1900-substr(gogek_jumin,1,2)) >= 30)";

if(sexs==3)
if (nai==1 || nai == 2 || nai == 3)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek where (2007-1900-substr(gogek_jumin,1,2)) < 40 and (2007-1900-substr(gogek_jumin,1,2)) >= 30 and substr(gogek_jumin,8,1)=2";
else if (nai==2)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek where (2007-1900-substr(gogek_jumin,1,2)) < 50 and (2007-1900-substr(gogek_jumin,1,2)) >= 40 and substr(gogek_jumin,8,1)=2";
else if (nai==3)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek where substr(gogek_jumin,8,1)=2 and ((2007-1900-substr(gogek_jumin,1,2)) < 50 and (2007-1900-substr(gogek_jumin,1,2)) >= 40) or ((2007-1900-substr(gogek_jumin,1,2)) < 40 and (2007-1900-substr(gogek_jumin,1,2)) >= 30)";

if (is==1)
sql="select gogek_no, gogek_name, gogek_tel, substr(gogek_jumin,8,1) sex, gogek_jumin from gogek";

rs=stmt.executeQuery(sql);

String no="";
String name="";
String tel="";
String sex="";
String jumin="";
if (sex.equals("1"))
sex = "남자"; else sex="여자";

// 순방향으로 이동한다.
// Db자료의 자료를 바로 보는 법은 없다. 내가 보이게 되는 화면을 가지고 자료를 가지고 오게 된다.
jta.setText("");
while(rs.next()) {
no=rs.getString("gogek_no");
name=rs.getString("gogek_name");
tel=rs.getString("gogek_tel");
sex=rs.getString("sex");
jumin=rs.getString("gogek_jumin");

if (sex.equals("1"))
sex = "남자"; else sex="여자";
jta.append(no+" "+name+" "+tel+" "+sex+" "+jumin+"\n"); // 값을 추가 시킨다.
}
conn.commit();
}catch (SQLException e1x) {
System.out.println("문제 발생"+e1x);
conn.rollback();
}finally{
conn.setAutoCommit(true);
rs.close(); stmt.close(); conn.close();
}
}catch (Exception ex) {
System.out.println("오류"+ex.getMessage());
}
}

public Dimension getPreferredSize(){
return new Dimension(500,400);
}

public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btn)) // 전체 선택
connect(1);
}

public void itemStateChanged(ItemEvent e) {
if (e.getSource() == rad1) {
sexs = 1;
connect(2);
}
else if (e.getSource() == rad2) {
sexs = 2;
connect(2);
}
else if (e.getSource() == rad3) {
sexs = 3;
connect(2);
}

if (e.getSource() == jc1) {
nai = 0;
if (jc1.getState()==true)
nai += 1;
if (jc2.getState()==true)
nai += 2;
connect(2);
}
if (e.getSource() == jc2) {
nai = 0;
if (jc1.getState()==true)
nai += 1;
if (jc2.getState()==true)
nai += 2;
connect(2);
}
}
}


package db;

import javax.swing.*;

public class dbMonMain {

public static void main(String[] args) {
JFrame frame = new JFrame("db주말연습문제"); // 포함관계
dbMons tjp = new dbMons();
frame.getContentPane().add(tjp, "Center");
frame.setSize(tjp.getPrefrerredSize());
frame.setLocation(200, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

package db;
import java.awt.*;
import javax.swing.*;


public class dbMons extends JPanel {
JTabbedPane pane;
dbMon1 mo1;
dbMon2 mo2;
dbMon3 mo3;
dbMon4 mo4;
dbMonSe1 mo5;
public dbMons() {
this.setLayout(new BorderLayout());
pane = new JTabbedPane();
mo1 = new dbMon1();
pane.addTab("1번문제", mo1);

mo2 = new dbMon2();
pane.addTab("2번문제", mo2);



mo3 = new dbMon3();
pane.addTab("3번문제", mo3);

mo4 = new dbMon4();
pane.addTab("4번문제", mo4);
mo5 = new dbMonSe1();
pane.addTab("5번문제", mo5);

pane.setSelectedIndex(0);
pane.requestFocus();

this.add("Center",pane);
}
public Dimension getPrefrerredSize(){
return new Dimension(600,600);
}
}


package db;

import java.awt.*;
import javax.swing.*;

import java.sql.*;
import java.awt.event.*;

public class dbMonSe1 extends JPanel implements ActionListener, ItemListener{
Connection conn;
Statement stmt;
ResultSet rs;
int sex;
String tost;
JLabel jl1=new JLabel("상품명");
JLabel jl2=new JLabel("수 량");
JLabel jl3=new JLabel("단 가");
TextField jname=new TextField(10);
TextField jsu=new TextField(10);
TextField jdan=new TextField(10);

JButton btn1=new JButton("등록"), btn2=new JButton("결과"), btn3=new JButton("종료");
JScrollPane jsc;
JTextArea jta=new JTextArea("");


public dbMonSe1() {
jsc = new JScrollPane(jta);
this.setLayout(new GridLayout(2,1));
JPanel pn2=new JPanel();
pn2.setLayout(new GridLayout(3,1));
JPanel pn2_1=new JPanel();
JPanel pn2_2=new JPanel();
JPanel pn2_3=new JPanel();

pn2_1.add(jl1);
pn2_1.add(jname);
pn2_1.add(btn1);
pn2_2.add(jl2);
pn2_2.add(jsu);
pn2_2.add(btn2);
pn2_3.add(jl3);
pn2_3.add(jdan);
pn2_3.add(btn3);
pn2.add(pn2_1,"Center");
pn2.add(pn2_2,"Center");
pn2.add(pn2_3,"Center");
this.add(pn2,"Center");
this.add(jsc,"Center");
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
}

public void connect(int is) {
String code="";
String name="";
String su="";
String dan="";

try{
// 드라이버 로딩
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (Exception ex) {
System.out.println("로더 실패:"+ex.getMessage());
ex.printStackTrace();
}
try{ // 이 try 문에대해서는 select문만 사용할 시에는 사용하지 않아도 된다.
// DB연결 //odbc에서 추가 시켜 준다
conn=DriverManager.getConnection("jdbc:odbc:oradbs","scott","tiger");
// Transaction process
conn.setAutoCommit(false); // 기본은 true 로 되어 있다
try {
String sql="";
// Sql문 처리
stmt=conn.createStatement();

// 해당 문자를 sql 문장에서 문자로 넣어 버린다. 자바에서는 nextval을 사용해야 한다
//stmt.executeUpdate("insert into sangdata values(code_seq nextval, '마우스',100,2500)");

// select문 사용
// 고객넘버, 고객네임, 고객전번, 고객주민, 고객담사번

if (is==1) {
String ss =jname.getText();
sql=("select count(*) cnt from sangdata where sang ='"+ss+"'");
rs=stmt.executeQuery(sql);
rs.close();
while(rs.next())
name=rs.getString("cnt");
if (name.equals("1")) {
JOptionPane.showMessageDialog(this, "이미 해당 상품명이 있습니다.");
jname.setText("");
jsu.setText("");
jdan.setText("");
} else {
String n1=jname.getText();
String n2=jsu.getText();
String n3=jdan.getText();
sql="insert into sangdata values(code_seq.nextval, '"+n1+"',"+n2+","+n3+")";
stmt.executeUpdate(sql);
JOptionPane.showMessageDialog(this, jname.getText() + " 상품이 입력되었습니다.");
}
}
if (is==2) {
sql="select code, sang, su, dan from sangdata";
rs=stmt.executeQuery(sql);
jta.setText("");
while(rs.next()) {
code=rs.getString("code");
name=rs.getString("sang");
su=rs.getString("su");
dan=rs.getString("dan");
jta.append(code+" "+name+" "+su+" "+dan+"\n"); // 값을 추가 시킨다.
}
rs.close();
stmt.close();
}
// 순방향으로 이동한다.
// Db자료의 자료를 바로 보는 법은 없다. 내가 보이게 되는 화면을 가지고 자료를 가지고 오게 된다.
conn.commit();
}catch (SQLException e1x) {
System.out.println("문제 발생"+e1x);
conn.rollback();
}finally{
conn.setAutoCommit(true);
stmt.close(); rs.close(); conn.close();
}
}catch (Exception ex) {}
}

public Dimension getPreferredSize(){
return new Dimension(500,400);
}

public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btn1)) { // 등록 버튼 클릭시
if (jname.getText().equals("")) {
JOptionPane.showMessageDialog(this, "상품명을 넣어 주세요.");
jname.requestFocus();
} else if (jsu.getText().equals("")) {
JOptionPane.showMessageDialog(this, "수량을 넣어주세요.");
jsu.requestFocus();
} else if (jdan.getText().equals("")) {
JOptionPane.showMessageDialog(this, "단가를 넣어 주세요.");
jdan.requestFocus();
} else connect(1);
}
if(e.getSource().equals(btn2)) { // 전체 선택시
connect(2);
jname.requestFocus();
}
if(e.getSource().equals(btn3)) // 종료 선택시
System.exit(0);

}

public void itemStateChanged(ItemEvent e) {
}
}