我试图使用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查询。
答案 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块的本地变量。