如何使用db在java swing gui中显示特定值?

时间:2016-12-11 13:54:09

标签: java swing user-interface

我试图使用java swing gui.i从db获取学生姓名和父亲姓名。我使用了以下源代码。当我执行代码时,我没有收到任何错误。

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();
        }
    });
    }
    }

当我对滚动硬编码和批处理时没有我可以在控制台中看到结果。但是当我传递参数时它没有被执行,我可以看到gui中没有更新。

现在我在输入rollno和batchno

时在eclipse控制台中得到以下响应
  

oracle.jdbc.driver.OracleResultSetImpl@1811e67 rollno batchno   student_name father_name   oracle.jdbc.driver.OracleResultSetImpl@16d0c80拿起来   JAVA_TOOL_OPTIONS:-agentlib:jvmhook

我认为我传递的值不会从gui发布到sql查询。

1 个答案:

答案 0 :(得分:1)

在connect方法中,在查询字符串后添加此代码,并确保删除该语句: - 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(student_name +“”+ father_name);

此外,如果要在swing标签中显示这些值,只需将这些String变量传递给标签构造函数,同时确保在类中声明这些变量,即:student_name和father_name,以便所有方法都可以访问它们在你的班上现在,在我的代码中,这些变量是ResultSet块的本地变量。