2016-12-11 1 views
0

Ich habe versucht, den Namen des Studenten und Vaters aus der db mit Java Swing gui.I haben den unten genannten Quellcode verwendet. Wenn ich den Code ausgeführt habe, erhalte ich keinen Fehler.Wie die spezifischen Werte in Java Swing GUI mit der db angezeigt werden?

import javax.swing.*; 
import java.sql.*; 
import java.awt.*; 
import java.awt.event.*; 
public class Test1 { 

    JFrame f; 
    JLabel l1,l2,l3,l4; 
    JTextField f1,f2; 
    JButton b1; 
    Connection con; 
    Statement st = null; 
    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:@//drf9db07:1521/DRF9DB_EDA","EDA_XMLV02_IMP_f9","clob1234"); 
      st =con.createStatement(); 

      String str = "select student_name,father_name from studentdb where rollno=? and batchno=?"; 
      ResultSet rs = st.executeQuery(str); 
      System.out.println(rs); 

      while (rs.next()) { 
      String student_name = rs.getString("student_name"); 
      String father_name = rs.getString("father_name"); 
      System.out.println(student_name + "\t" + father_name); 
     } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 


    } 

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

    f.setLayout(new GridBagLayout()); 
    f.add(l1); 
    f.add(f1); 
    f.add(l2); 
    f.add(f2); 
    f.add(b1); 
    f.add(l3); 
    f.add(l4); 

    f.setVisible(true); 
    f.pack(); 
    b1.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e) 
     { 
      String rollno=l1.getText(); 
      String batchno=l2.getText(); 
      String student_name=l3.getText(); 
      String father_name=l4.getText(); 
      System.out.println(rollno); 
      System.out.println(batchno); 
      System.out.println(student_name); 
      System.out.println(father_name); 

      connect(); 
     } 
    }); 
    } 
    } 

Wenn ich die Rolle nicht und Batch codieren no i die Ergebnisse in der console.but sehen konnte, wenn ich die Parameter übergeben ihre nicht ausgeführt zu werden, und ich keine Aktualisierungen in der gui sehen konnte.

jetzt ich erhalte die folgende Reaktion in der Eclipse-Konsole, wenn die rollno und batchno eingegeben

[email protected] rollno batchno student_name father_name oracle.jdbc.driver.OracleResultSetImpl @ 16d0c80 JAVA_TOOL_OPTIONS abgeholt: -agentlib: jvmhook

ich denke, die Werte, die ich vorbei bin nicht auf die sQL-Abfrage aus dem gui geschrieben.

+2

Anstatt den Rückgabewert Ihres executeQuery-Befehls zu verschwenden, weisen Sie ihn einem ResultSet zu: ResultSet rs = st.executeQuery (str); Dann bringt Sie rs.next() zum ersten Eintrag. Lies dies: https://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html –

+0

danke @ CostisAivalis – sathya

Antwort

1

In Ihrer Connect-Methode fügen Sie diesen Code nach der Abfrage in Zeichenfolge und stellen Sie sicher, dass Sie die Anweisung entfernen: - st.executeQuery (str); ResultSet rs = st.executeQuery (str);

while(rs.hasNext()) 
{ 
    String student_name=rs.getString("student_name"); 
    String father_name=rs.getString("father_name"); 
} 

System.out.println (Schülername + "" + Vatername);

Auch wenn Sie diese Werte im Swing-Label anzeigen möchten, übergeben Sie diese String-Variablen einfach an die Label-Konstruktoren. Stellen Sie außerdem sicher, dass Sie diese Variablen global in Ihrer Klasse deklarieren: student_name und vater_name, damit sie für alle zugänglich sind Methoden in Ihrer Klasse. Im Moment sind diese Variablen in meinem Code lokal für den Block ResultSet.

+0

Danke @Manish sakpal ich versuchte den Code, aber es zeigt Fehler bei der Verwendung der hasNext, aber als nächstes scheint es Arbeiten. – sathya

+0

Welcher Fehler wird angezeigt, wenn die Methode hasNext() des ResultSet verwendet wird. Bitte poste es, da es für Leute hilfreich sein könnte, die in Zukunft in ihrem Code auf solche Probleme stoßen. –

+0

@ Manish sakpal tatsächlich bekomme ich die SQL-Ausnahme Fehler, die ich später poste – sathya