자바 sql문 연동안돼요.. 도와주세요

자바 sql문 연동안돼요.. 도와주세요

작성일 2007.11.27댓글 1건
    게시물 수정 , 삭제는 로그인 필요

InputPane소스

-------------

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

//JDBC를 사용하기 위해 sava.sql 패키지를 import한다.

import java.sql.*;

import javax.sql.*;
import java.util.*;

public class InputPane extends JPanel implements ActionListener{
 
 //JDBC관련 맴버
 
 /*private String url = "jdbc:odbc:jdbc2";
 private Connection con;
 private Statement stmt;*/
 
 //Swing관련 맴버
 
 private JPanel p[];
 private JLabel l[];
 private JTextField tf[];
 private JButton okb;
 private JButton rsb;
 
 public InputPane(){
  
  //스윙 컴포넌트들을 배치한다.
  
  setLayout(new GridLayout(8,1));
  EtchedBorder ed = new EtchedBorder();
  setBorder(ed);
  
  p = new JPanel[8];
  l = new JLabel[7];
  tf = new JTextField[6];
  
  
  l[0] = new JLabel("이 름 :");
  l[1] = new JLabel("학번 :");
  
  l[6] = new JLabel(" 과목명 | 학점 | 강의실 | 시간표  | 수강신청 ");
  
  l[2] = new JLabel("컴퓨터구조 | 3 | a2142 | 월 234|");
  l[3] = new JLabel("데이터통신 | 3 | a2031 | 화 234|");
  l[4] = new JLabel("자료구조    | 2 | a8232 | 수 12 |");
  l[5] = new JLabel("C언어         | 1 | a2031 | 목 5  |");
  
  for(int i = 0; i<6; i++){
   
   if(i==2){
    
    p[7] = new JPanel();   
    p[7].add(l[6]);  
    add(p[7]);
   }
   
   tf[i] = new JTextField(10);
   p[i] = new JPanel();
   p[i].add(l[i]);
   p[i].add(tf[i]);
   
   add(p[i]);
  }
 
  p[6] = new JPanel();
  okb = new JButton("저장하기");
  okb.addActionListener(this);
  rsb = new JButton("다시쓰기");
  rsb.addActionListener(this);
  p[6].add(okb);
  p[6].add(rsb);
  add(p[6]);
 }
 
 public void actionPerformed(ActionEvent ae){
 
  String ae_type = ae.getActionCommand();
 
  if(ae_type.equals(okb.getText())){
  //저장하기 버튼이 클릭되었을 경우
  
  String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
 String url = "jdbc:odbc:jdboc";
 
 Connection con = null;
 Statement stmt = null ; 
 
 String query = "Insert into member(ID, name, com, dat, ja, c) values";
 
  try{
   //JDBC드라이버를 등록한다.
     //커넥션으로부터 실제로 SQL쿼리를 실행시키기 위한
   //Statement 객체를 얻어온다.  
  
    
   //실행시킬 SQL 쿼리문을 작성한다.  
   
    //MYsql에 한글이 바르게 입력되도록 하기 위해 8859_1로 인코딩한다.
   
    query = query + " ' "+
     new String(tf[0].getText().getBytes("KSC55601"), "8859_1")+ " ' ";
   
    query = query + " ' "+ tf[1].getText() + " ', ";
    query = query + " ' "+ tf[2].getText() + " ', ";
    query = query + " ' "+ tf[3].getText() + " ', ";
    query = query + " ' "+ tf[4].getText() + " ', ";
    query = query + " ' "+ tf[5].getText() + " ', ";
   //execute()메서드를 사용해서 쿼리를 실행시킨다.
    Class.forName(driver);
  con = DriverManager.getConnection(url, "master","java" );
  stmt= con.createStatement();
  stmt.executeUpdate(query);   
    System.out.println("데이터베이스 연결 성공~!");
  
  
   //사용을 마친 statment 객체를 바로 닫는다.
  
   stmt.close();
  
   //더이상 수행할 작업이 없으므로 데이터베이스의 커넥션을 닫는다.
   con.close();
  
  }
 
  catch(Exception e) {
  // System.out.println("데이터베이스 연결 실패!av");
  }
 }
 

 else if(ae_type.equals(rsb.getText())){
  //텍스트 필드를 초기화한다.
  for(int i=0; i<6; i++){
   tf[i].setText(" ");
  
  }
 }
 
 }
}

 

 

------------------

Score소스

 

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

public class Score extends JFrame{
 
 private JTabbedPane tp;
 private InputPane ip;
 private SearchPane sp;
 
 public Score(){
  //프레입에 추가될 컴포넌트 초기화
  
  tp = new JTabbedPane();
  ip = new InputPane();
  sp = new SearchPane();
  
  //탭 추가
  tp.addTab("수강신청", ip);
  tp.addTab("수강확인", sp);
  
  //TabbedPane을 프레임에 추가
  getContentPane().add(tp);
  setTitle("수강신청 관리 ");
 }
 
 public static void main(String args[]){
  
  //프레임 객체를 생성하고 화면에 출력한다.
  
  Score score = new Score();
  
  Dimension d = new Dimension(350,450);
  score.setSize(d);
  score.setVisible(true);
  score.show(true);
  
 }
 
}
----------------------------------

SearchPane 소스

 

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

import javax.sql.*;
import java.util.*;


public class SearchPane extends JPanel implements ActionListener{
 
 //jdbc관련 맴버
 
 private String url = "jdbc:odbc:jdboc";
 private Connection con;
 private Statement stmt;
 
 //Swing관련 맴버
 
 private JPanel p[];
 private JLabel l[];
 private JTextField tf[];
 private JButton okb;
 private JButton rsb;
 
 public SearchPane(){
  
  setLayout(new GridLayout(9,1));
  EtchedBorder eb = new EtchedBorder();
  setBorder(eb);
  
  p = new JPanel[8];
  l = new JLabel[7];
  tf = new JTextField[6];
  
  l[0] = new JLabel("이 름 :");
  l[1] = new JLabel("학번 :");
  
  l[6] = new JLabel(" 과목명 | 학점 | 강의실 | 시간표  | 수강신청 ");
  
  l[2] = new JLabel("컴퓨터구조 | 3 | a2142 | 월 234|");
  l[3] = new JLabel("데이터통신 | 3 | a2031 | 화 234|");
  l[4] = new JLabel("자료구조    | 2 | a8232 | 수 12 |");
  l[5] = new JLabel("C언어         | 1 | a2031 | 목 5  |");
  
  for(int i = 0; i<6; i++){
   
   if(i==2){
    
    p[7] = new JPanel();   
    p[7].add(l[6]);  
    add(p[7]);
   }
   
   tf[i] = new JTextField(10);
   p[i] = new JPanel();
   p[i].add(l[i]);
   p[i].add(tf[i]);
   
   add(p[i]);
  }
  
  
  tf[2].setEditable(false);
  tf[3].setEditable(false);
  tf[4].setEditable(false);
  tf[5].setEditable(false);
  /*tf[6].setEditable(false);
  tf[7].setEditable(false);*/
  
  p[6] = new JPanel();
  
  okb = new JButton("신청조회");
  okb.addActionListener(this);
  rsb = new JButton("다시쓰기");
  rsb.addActionListener(this);
  p[6].add(okb);
  p[6].add(rsb);
  add(p[6]);
 }
  
 public void actionPerformed(ActionEvent ae){
  
String ae_type = ae.getActionCommand();
  
  if(ae_type.equals(okb.getText())){
  //저장하기 버튼이 클릭되었을 경우
  
  try{
   //JDBC드라이버를 등록한다.
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   
   //DriverManager로부터 커넥션을 얻어온다.
   //MY-sql서버 : local
   //ID : root
   //Password :
   
   con = DriverManager.getConnection(url, "master","java");
   
   //커넥션으로부터 실제로 SQL쿼리를 실행시키기 위한
   //Statement 객체를 얻어온다.
   
   stmt = con.createStatement();
   
   //SELECT 쿼리를 작성한다.
   
   String query = "SELECT * FROM score WHERE name=";
   query = query + " ' "+new String(tf[0].getText().getBytes(" KSC5601"), "8859_1");
   query = query + " ' and snum= '" + tf[1].getText()+" ' ";
   
   //executeQuery()메서드로 select문의 실행시키고 결과로 resultset객체를 받는다.
   
   ResultSet rs = stmt.executeQuery(query);
   
   //레코드가 있는지 검사
   
   if(rs.next()){
    
    tf[0].setText(new String(rs.getString("ID").getBytes("8859_1)"),"KSC5601"));
    
    tf[1].setText(rs.getString(" name"));
    tf[2].setText(" "+rs.getInt(" com"));
    tf[3].setText(" "+rs.getInt(" dat"));
    tf[4].setText(" "+rs.getInt(" ja"));
    tf[5].setText(" "+rs.getInt(" c"));
    /*tf[6].setText(" "+rs.getInt(" sum"));
    tf[7].setText(" "+rs.getInt(" avg"));*/
   }
   
   stmt.close();
   con.close();
  }catch(Exception e) {e.printStackTrace();}
  }
  
  else if(ae_type.equals(rsb.getText())){
   
   for(int i = 0; i<6; i++){
    
    tf[i].setText(" ");
   }
  }
  
  
 }
 
 
 
}

 

 

 

-------------------------------

 

이렇게 총 3개로 작성했는데 미치겠습니다. 분명이 다른걸로 하면 잘되는데 왜 이게 안되는지 모르겠습니다

데이터베이스는 엑세스로 사용했구여 컴터자체에서 연동설정이 안된다거나 그러진 않습니다. 다른걸로는 SQL문이잘돌아갔거든요(이거와 다른방식의 프로그램)

 

SQL문이잘못된건가요? InputPane 에서 막히는데,, 학번, 이름 과목명을 입력하고 수강신청을 클릭하면 꿈쩍도안함니다 아무반응이 없어요 .. 엑세스에서 파일열어서 확인해봐도 아무런데이터가 입력되지도않고 ..

 

도와주세요 ㅠ_ㅠ

 


#자바 sql문

profile_image 익명 작성일 -

길어서 일일이 전부는 못 보았고 말씀하신 부분에 오류소지가 있어 그 부분만 적겠습니다...다른 부분도 이런 것이 있는지 참고하세요.

 

위 처럼 변수를 이용한 SQL문 작성 시 최종 수행 전에 변수값을 찍어서 SQL문을 확인 해 보면 의외로 간단히 해결되는 오류들이 많습니다.

INSERT INTO ~ VALUES 문의 구조는

INSERT INTO 테이블명( 컬럼List ) VALUES( 값List ) 입니다.


 String query = "Insert into member(ID, name, com, dat, ja, c) values";
  ... 중략 ...    
    query = query + " ' "+ <-- 시작하는 괄호가 없네요...
     new String(tf[0].getText().getBytes("KSC55601"), "8859_1")+ " ' ";
   
    query = query + " ' "+ tf[1].getText() + " ', ";
    query = query + " ' "+ tf[2].getText() + " ', ";
    query = query + " ' "+ tf[3].getText() + " ', ";
    query = query + " ' "+ tf[4].getText() + " ', ";
    query = query + " ' "+ tf[5].getText() + " ', "; <-- 마지막에 ,가 하나 더 들어있군요...마찬가지로 닫는 괄호도 없습니다.

건승하시길...수고하세요~~

mysql 이랑 자바 연동질문

유튜브에서 자바-mysql 연동보면서따라하고... import java.sql.* ; public class testdb { public... ㅠㅠ 코린이...도와주세요.....

자바랑 mysql 연동

jsp를 배우는중이어서 자바sql연동부분을 학습중인데요... 알려주세요 하나하나 1.드라이버로딩 Class.forName(); 2.연결객체 생성...

자바 mssql db 연동 회원가입

java 와 mssql을 연동해서 회원가입하는 소스를... 도와주세요... ㅠ 받아온 아이디 : loginidText... try{ String sql = "select * from memberTable where id...

php sql 질문있습니다. 도와주세요

... sql 문은 그냥 딜리트 테이블 지정해주고 세번째... 제발 도와주세요 ㅠㅠ 안녕하세요. 소스놀이터란... randString=2345 으로 이동 -> 자바스크립트로 표현하면......