如何让我的程序在JtextField中显示数据库中的用户名?

时间:2016-04-24 13:19:03

标签: java database swing sqlite jtextfield

我正在制作一个你登录的程序,它会让你在登录后进入一个不同的框架。程序的那部分可以工作,但我无法让它返回用户的名字和其他来自数据库的数据。它连接到数据库,但不会返回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);
}


}

}

1 个答案:

答案 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方法。