我正在制作一个你登录的程序,它会让你在登录后进入一个不同的框架。程序的那部分可以工作,但我无法让它返回用户的名字和其他来自数据库的数据。它连接到数据库,但不会返回JTextField中的信息。如果我能找到如何做firstName,我可以弄清楚其余的。我使用Eclipse作为我的IDE,使用SQLite Manager作为数据库。 有2个表 登录(用户名,密码) 学生(SID,firstName,GradeLevel等) 用户名也是ID以S开头(如S01等)。 这是代码。
public class student extends JFrame {
private JTextField textField;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
student frame = new student();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private void ShowInfo() {
try{
String query="SELECT firstName From Student,Login Where firstname=?";
PreparedStatement ps=conn.prepareStatement(query);
ps.setString(1, "firstName");
ResultSet rs= ps.executeQuery();
while (rs.next()) {
textField.setText(rs.getString("firstName"));
System.out.print(""+textField);
}ps.close();
conn.close();
} catch ( Exception ex)
{
JOptionPane.showMessageDialog(null,ex);
}
}
}
答案 0 :(得分:1)
private void ShowInfo() {
try{
String query="SELECT firstName From Student,Login Where firstname=?";
PreparedStatement ps=conn.prepareStatement(query);
ps.setString(1, "firstName");
ResultSet rs= ps.executeQuery();
if(rs.next()) {
textField.setText(rs.getString(1));
System.out.print(""+textField); //you are getting data
}ps.close();
conn.close();
} catch ( Exception ex)
{
JOptionPane.showMessageDialog(null,ex); //you have a error
}
}
代码中有一些错误的东西。第一个是sql statment Student,Login Where firstname
应该有问题。
你应该改变这一行textField.setText(rs.getString(1));
并且您有while loop
来提取数据,但您计划使用textfield
来存储数据。如果你期望结果集中有多个输出,那么你需要的不仅仅是jtextfield,而是jtable。 bt我已经将你的while循环更改为if loop
以从结果集中获取单个输出。我在你的应用程序中注意到的另一件事是你没有调用showInfo
方法。