2016-12-11 2 views
0

Java를 사용하여 DB에서 값을 가져 오려고했습니다. 자신의 롤 번호를 입력 할 때 이미 DB에 저장된 학생 이름과 아버지 이름을 알아야합니다.데이터베이스에서 값을 가져 오는 방법은 무엇입니까?

아래 코드를 시도했는데 오류가 발생했습니다. (편집 오류 스택 추적 후 인쇄.)

ClassNotFoundException: oracle.jdbc.driver.OracleDriver 

솔루션이나 문제를 제언한다.
import javax.swing.*; 
import java.sql.*; 
import java.awt.*; 
import java.awt.event.*; 
public class Test1 { 

    JFrame f; 
    JLabel l1,l2; 
    JTextField f1; 
    JButton b1; 
    Connection con; 
    Statement st; 
    ResultSet rs; 

    /** 
    * Creates new form Register 
    */ 
    public static void main(String args[]) { 
     Test1 r=new Test1(); 
     r.frame(); 
     r.connect(); 
    } 

    public void connect() { 
     try { 

      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      con = DriverManager.getConnection("jdbc:oracle:thin:@//hostname:port/servicename","username","password"); 
      st = (Statement) con.createStatement(); 
      String str = "select student_name,father_name from student_db where roll_no='&roll_no'"; 
      st.executeUpdate(str); 
      System.out.println(str); 
     } catch (Exception ex) { 
     } 


    } 

    public void frame() 
    { 
    f=new JFrame ("studentrecord"); 
    f1=new JTextField(10); 
    b1=new JButton("submit"); 
    l1=new JLabel("student_name"); 
    l2=new JLabel("father_name"); 

    f.setLayout(new GridBagLayout()); 
    f.add(l1); 
    f.add(f1); 
    f.add(l2); 
    f.add(b1); 
    f.setVisible(true); 
    f.pack(); 
    b1.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e) 
     { 
      String student_name=l1.getText(); 
      String father_name=l2.getText(); 
      String roll_no=f1.getText(); 
      System.out.println(student_name); 
      System.out.println(father_name); 
      System.out.println(roll_no); 

      connect(); 
     } 
    }); 
    } 
    } 

또한 학생의 이름과 아버지의 이름 라벨 값은 롤 번호로 표시되어야하지만, 그 옆이 button.is가 다른 더 나은 레이아웃처럼이 표시에 제출하는 표시?

+2

1) * "나는 어떤 에러도 내지 못하고있다."} catch (Exception ex) { }' "* 그런 코드를 작성할 때 에러에 대해 전혀 알지 못한다. 예외를 무시하지 마십시오! 그들은 정확히 무엇이 잘못되었는지 알려줍니다. 로깅이 구현되어 있지 않으면, 적어도'Throwable.printStackTrace()'를 호출하십시오. 2) 문제가 데이터를 가져 오거나 표시합니까? * "또한 학생 이름과 아버지 이름 레이블 값이 표시되어야합니다."* 문제를 줄이기 위해 별도로 테스트하십시오. SO는 헬프 데스크 또는 개인 교습 서비스가 아닙니다. Q & A 사이트입니다. –

+0

예, 문제는 데이터를 표시합니다 – sathya

+0

[예] (http://stackoverflow.com/a/34742409/230513). – trashgod

답변

1

아래 코드와 같은 것이 읽기 쿼리를 수행합니다. 하지만 글쎄, 뭔가를 쓰려고하기 전에 설명서를 읽으십시오.

public String studentName(String rollNo) throws SQLException { 
    Connection con = null; 
    PreparedStatement stm = null; 
    ResultSet rst = null; 
    String names = null; 
    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     con = DriverManager.getConnection("jdbc:oracle:thin:@hostname:port/servicename","username","password"); 
     stm = con.prepareStatement("select student_name,father_name from student_db where roll_no=?"); 
     stm.setString(1, rollNo); 
     rst = stm.executeQuery(); 
     if (rst.next()) 
      names = rst.getString(1)+","+rst.getString(2); 
     rst.close(); 
     rst = null; 
     stm.close(); 
     stm=null; 
     con.close(); 
     con = null; 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } finally { 
     if (rst!=null) rst.close(); 
     if (stm!=null) stm.close(); 
     if (con!=null) con.close(); 
    } 
    return names; 
} 
+0

그래 있는지 덕분에, 나는 printStackTrace에 그 아래의 오류를주고 java.lang.ClassNotFoundException가 시도 ClassNotFoundException은 DB 드라이버가 응용 프로그램의 런타임 클래스 경로에 있지 않기 때문에 발생합니다. – sathya

+0

이 나에게 유용하다 감사 @Sergio 몬토 – sathya

+0

이 내게 감사 앤드류 톰슨 – sathya

0

STM = con.prepareStatement ("student_db에서 father_name roll_no =를 STUDENT_NAME를 선택?"); stm.setString (1, rollNo); rst = stm.executeQuery();

이것은 확실히 작동합니다.

+0

감사합니다. – sathya