我试图从两个不同的表调用两组数据在JTextArea (jtaDisplay
)中显示。第一个表(emp_db
)将获得员工编号、姓名和姓氏。第二个表(sec_clearance
)将获得员工的安全许可级别。
该方法被放置在构造函数中,因此它将在框架启动时执行,但无论何时运行框架,它都不显示数据。没有错误消息出现,堆栈跟踪也没有显示任何错误消息。
我在方法内的各个地方放置了一个JOptionPane,以查看问题所在,并发现while(rs.next())
语句没有执行,因为JOptionPane显示在while
语句之外,但不在其中。
下面是我目前的代码:
try
{
String user = txtEmpTitle.getText();
String encuser = encrypt(user); //encrypting employee number with AES to read in database
String getEmpNum = "Select * from emp_db where emp_num = '" + encuser + "'";
String getSecLevel = "select secLevel from sec_clearance where emp_num = '" + encuser + "'";
Class.forName("com.mysql.jdbc.Driver");
Connection conn = (Connection)
DriverManager.getConnection("jdbc:mysql://localhost:3306/employee_database","root","pass123");
Statement stmt=conn.createStatement();
Statement stmt2=conn.createStatement();
ResultSet rs = stmt.executeQuery(getEmpNum);
ResultSet rs2 = stmt2.executeQuery(getSecLevel);
while(rs.next() && rs2.next())
{
String empNum = rs.getString("emp_num");
String empName = rs.getString("fname");
String empSname = rs.getString("sname");
String empSecLevel = rs2.getString("secLevel");
//decrypting data in database
String decNum = EmpEditDB.decrypt(empNum);
String decName = EmpEditDB.decrypt(empName);
String decSname = EmpEditDB.decrypt(empSname);
String decSecLevel = EmpEditDB.decrypt(empSecLevel);
jtaDisplay.setText("Employee number: " + decNum +
"nEmployee name: " + decName + " " + decSname +
"nSecurity clearance: " + decSecLevel);
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, e);
}
我如何在while语句中获得代码来执行和显示JTextArea中的数据?
只有当你有记录时,它才会进入while循环。最好使用preparedstatement进行动态值设置。为了调试的目的,尝试打印你的查询在调试和复制查询和执行在sql工具检查是否有记录。