package comicbook;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
class MemberFrame extends JFrame {
JPanel p,buttonPanel;
JTextField[] tf=new JTextField[4];
JLabel[] label=new JLabel[4];
String[] s={"ID:","NAME:","ADDRESS:","TELEPHONE:"};
JButton[] button=new JButton[4];
String[] b={" VIEW ","Update","Delete"," APPEND "};
JTextArea ta;
JScrollPane sp;
String p_id;
String p_name;
String p_addr;
String p_tel;
Connection con = null;
Statement stmt = null;
ResultSet rs=null;
public MemberFrame(){
this.setTitle("회원관리");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//this.setSize(300, 200);
this.createComponent();
this.addComponent();
this.pack();
this.setVisible(true);
}
public void createComponent(){
MemberHandler mh=new MemberHandler();
p=new JPanel(new GridLayout(0,2));
buttonPanel=new JPanel();
for(int i=0;i<4;i++){
tf[i]=new JTextField();
label[i]=new JLabel(s[i]);
}
tf[0].addActionListener(mh);
for(int i=0;i<4;i++){
button[i]=new JButton(b[i]);
button[i].addActionListener(mh);
}
button[3].setEnabled(false);
ta=new JTextArea(10,40);
ta.setEditable(false);
ta.setBackground(Color.LIGHT_GRAY);
sp=new JScrollPane(ta);
disEnabledButtons();
}
public void addComponent(){
for(int i=0;i<4;i++){
p.add(label[i]);
p.add(tf[i]);
}
for(int i=0;i<4;i++){
buttonPanel.add(button[i]);
}
this.add(p,BorderLayout.NORTH);
this.add(sp,BorderLayout.CENTER);
this.add(buttonPanel,BorderLayout.SOUTH);
}
class MemberHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
makeConnection();
String sql="";
try{
stmt=con.createStatement();
if(e.getSource()==tf[0]){
if(isExist()){
getData();
tf[1].setText(p_name);
tf[2].setText(p_addr);
tf[3].setText(p_tel);
enabledButtons();
button[3].setEnabled(false);
}else{
tf[1].requestFocus();
button[3].setEnabled(true);
}
}
if(e.getSource()==button[0]){
viewData();
}
else if(e.getSource()==button[1]){
updateData();
viewData();
}
else if(e.getSource()==button[2]){
deleteData();
viewData();
}
else if(e.getSource()==button[3]){
appendData();
viewData();
}
}catch(SQLException sqle){System.out.println(sqle.getMessage());}
disConnection();
}
}
public void viewData() throws SQLException{
String rows;
String sql="";
ta.setText("");
sql="SELECT * FROM members";
try{
rs=stmt.executeQuery(sql);
rs.last();
int count=rs.getRow();
System.out.println("count="+count);</div><div style="margin: 0px; padding: 0px; color: rgb(64, 64, 64); font-family: sans-serif; font-size: 13px;">rs.beforeFirst();
while(rs.next()){
getData();
rows=p_id+":"+p_name+":"+p_addr+":"+p_tel+"\n";
ta.append(rows);
}
}catch(SQLException sqle){System.out.println("viewData: SQL Error");}
clearTextField();
disEnabledButtons();
tf[0].requestFocus();
}
public void updateData() throws SQLException{
setData();
String sql="";
sql="UPDATE members SET name='"+p_name+"' WHERE id='"+p_id+"'";
System.out.println(sql);
stmt.executeUpdate(sql);
sql="UPDATE members SET address='"+p_addr+"' WHERE id='"+p_id+"'";
System.out.println(sql);
stmt.executeUpdate(sql);
sql="UPDATE members SET tel='"+p_tel+"' WHERE id='"+p_id+"'";
System.out.println(sql);
stmt.executeUpdate(sql);
clearTextField();
disEnabledButtons();
tf[0].requestFocus();
}
public void deleteData() throws SQLException{
setData();
String sql="";
sql="DELETE FROM members WHERE id='"+p_id+"'";
System.out.println(sql);
stmt.executeUpdate(sql);
clearTextField();
disEnabledButtons();
tf[0].requestFocus();
}
public void appendData() throws SQLException{
setData();
String sql="";
sql="INSERT INTO members (id,name,address,tel) values ";
sql+="('"+p_id+"','"+p_name+"','"+p_addr+"','"+p_tel+"')";
System.out.println(sql);
int isAppended=stmt.executeUpdate(sql);
if(isAppended==1)
System.out.println("Appended Successfully.");
else
System.out.println("Append Failed.");
clearTextField();
disEnabledButtons();
tf[0].requestFocus();
}
public boolean isExist(){
String sql="";
boolean isExist=false;
sql="SELECT * FROM members WHERE id='"+tf[0].getText()+"'";
try{
rs=stmt.executeQuery(sql);
if(rs.next())
isExist=true;
}catch(SQLException sqle){System.out.println("isExist: SQL Error");}
return isExist;
}
public void getData() throws SQLException {
p_id=fromMySQL(rs.getString("id"));
p_name=fromMySQL(rs.getString("name"));
p_addr=fromMySQL(rs.getString("address"));
p_tel=fromMySQL(rs.getString("tel"));
}
public void setData() throws SQLException {
p_id=toMySQL(tf[0].getText());
p_name=toMySQL(tf[1].getText());
p_addr=toMySQL(tf[2].getText());
p_tel=toMySQL(tf[3].getText());
}
public void clearTextField(){
for(int i=0;i<4;i++){
tf[i].setText("");
}
}
public void disEnabledButtons(){
for(int i=1;i<4;i++)
button[i].setEnabled(false);
}
public void enabledButtons(){
for(int i=0;i<4;i++)
button[i].setEnabled(true);
}
public String toMySQL(String str){
try{
if (str != null)
return new String(str.getBytes("KSC5601"), "8859_1");
else
return null;
} catch (Exception e) {e.printStackTrace();return null;}
}
public String fromMySQL(String str){
try{
if (str != null)
return new String(str.getBytes("8859_1"),"KSC5601");
else
return null;
} catch (Exception e) {e.printStackTrace();return null;}
}
public Connection makeConnection(){
String url="jdbc:mysql://localhost/comicbook_db";
String id="root";
String password="twiceioi";
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("드라이브 적재 성공");
con=DriverManager.getConnection(url, id, password);
System.out.println("데이터베이스 연결 성공");
}catch(ClassNotFoundException e){
System.out.println("드라이버를 찾을 수 없습니다");
e.getStackTrace();
}catch(SQLException e){
System.out.println("연결에 실패하였습니다");
}
return con;
}
public void disConnection() {
try{
rs.close();
stmt.close();
con.close();
}catch(SQLException e){System.out.println(e.getMessage());}
}
}
public class Members {
public static void main(String[] args){
new MemberFrame();
}
}
현재 과제를 하는중인데 데이터 베이스를 이용하는 것인데 데이터 베이스에는 이렇게 입력햇습니다.
create table members(
id varchar(30) primary key,
name varchar(30) ,
addr varchar(30),
tel varchar(20)
);
insert members(id, name, addr, tel) values ('asd', 'asdf', 'avx', 'asdf');
그런데 계속 이클립스 콘솔창에는
드라이브 적재 성공
데이터베이스 연결 성공
count=1
viewData: SQL Error
이렇게 출력이 되고 에러가 뜨는데 이유를 잘모르겠습니다.
해결완료!
계속 에러가 나는이유를 잘 모르겠습니다
sql에러면 연동문제 확인해봐 그리고 중간에 예외처리에 오류출력하게 좀 넣어두고