2016-04-17 13 views
0

私はログインプロンプトの後にGUI画面にあなたをログインさせ、学生の枠組みに入りログインするJavaプログラムを作っています。特定のJTextFieldにログインしているユーザーのデータを取得するSQLite Managerデータベースに接続します。私はデータベースに接続していますが(接続していることを確認しましたが)、データベースのデータは表示されません。ここでSQLite ManagerからJTextFieldにデータを取得する方法はありますか?

は私のログインコードです:

public class LoginC { 

private JFrame frame;  //Frame name frame 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       LoginC window = new LoginC(); 

       window.frame.setVisible(true); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

Connection connection=null; 
private JTextField textField1; 
private JPasswordField passwordField; 
/** 
* Create the application. 
*/ 

public LoginC() { 
    initialize(); 
    connection=SqliteConnection.dbConnector(); 
} 

/** 
* Initialize the contents of the frame. 
*/ 
private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JLabel lblUserName = new JLabel("User Name"); 
    lblUserName.setFont(new Font("Times New Roman", Font.BOLD, 15)); 
    lblUserName.setBounds(134, 82, 84, 23); 
    frame.getContentPane().add(lblUserName); 

    JLabel lblPassword = new JLabel("Password"); 
    lblPassword.setFont(new Font("Times New Roman", Font.BOLD, 15)); 
    lblPassword.setBounds(134, 125, 84, 14); 
    frame.getContentPane().add(lblPassword); 

    textField1 = new JTextField(); 
    textField1.setBounds(244, 82, 147, 23); 
    frame.getContentPane().add(textField1); 
    textField1.setColumns(10); 

    passwordField = new JPasswordField(); 
    passwordField.setBounds(244, 121, 147, 23); 
    frame.getContentPane().add(passwordField); 

    JButton btnLogin = new JButton("Login"); 
    btnLogin.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      try{ 
       String query 

       = " select * from Login where USERNAME=? and PASSWORD=?"; 
       //String query="select * from LoginTb as L1,LoginTb as L2 where L1.USERNAME=L2.USERNAME and L1.PASSWORD=L2.PASSWORD; "; 
       PreparedStatement pst = connection.prepareStatement(query); 
       pst.setString(1,textField1.getText()); 
       pst.setString(2,passwordField.getText()); 

       ResultSet rs=pst.executeQuery(); // variable object r s to keep track of result 
       int count =0; 
       while (rs.next()) 
       { 
        count=count+1; 
       } 
       if (count ==1) 
       { 
        JOptionPane.showMessageDialog(null, "USERNAME and PASSWORD is correct"); 
        frame.dispose();      
        student ts = new student(); // import student resource 
        ts.setVisible(true); 

       } 
       else if (count>1) 
       { 
        JOptionPane.showMessageDialog(null, "Duplicated USERNAME and PASSWORD is invalid"); 
       } 
       else 
       { 
        JOptionPane.showMessageDialog(null, "USERNAME and PASSWORD is not correct Try again..."); 
       } 

       rs.close();   // close connectors 
       pst.close(); 

      } catch (Exception e) 

      { 
       JOptionPane.showMessageDialog(null, e); 
      }   
     } 
    }); 
    btnLogin.setFont(new Font("Times New Roman", Font.BOLD, 17)); 
    btnLogin.setBounds(198, 168, 89, 23); 
    frame.getContentPane().add(btnLogin); 
}} 

はここで学生のためのフレームです:

public class student extends JFrame { 

private JPanel contentPane; 
private JPanel contentPane1; 
private JTextField textField; 
private JTextField textField_3; 
private JTextField textField_2; 
Connection connection=null; 


/** 
* Launch the application. 
*/ 
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(); 
      } 
     } 
    }); 
} 

/** 
* Create the frame. 
*/ 
public student() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 450, 300); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    JLabel lblstudent = new JLabel("Student Screen"); 
    lblstudent.setFont(new Font("Times New Roman", Font.BOLD, 18)); 
    lblstudent.setBounds(142, 10, 150, 43); 
    contentPane.add(lblstudent); 

    JButton btnNewButton = new JButton("List Info"); 
    btnNewButton.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent e) { 
      Info(); 
      setVisible(true); 
     } 
    }); 
} 


protected void Info() { 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
setBounds(100, 100, 585, 387); 
contentPane = new JPanel(); 
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
setContentPane(contentPane); 
contentPane.setLayout(null); 

JLabel lblNewLabel = new JLabel("Name"); 
lblNewLabel.setFont(new Font("Times New Roman", Font.BOLD, 14)); 
lblNewLabel.setBounds(97, 11, 46, 14); 
contentPane.add(lblNewLabel); 

textField = new JTextField(); 
textField.setBounds(20, 30, 199, 20); 
contentPane.add(textField); 
textField.setColumns(10); 

textField_3 = new JTextField(); 
textField_3.setBounds(242, 30, 86, 20); 
contentPane.add(textField_3); 
textField_3.setColumns(10); 

textField_2 = new JTextField(); 
textField_2.setBounds(338, 30, 86, 20); 
contentPane.add(textField_2); 
textField_2.setColumns(10); 

JLabel lblNewLabel_1 = new JLabel("Grade Level"); 
lblNewLabel_1.setFont(new Font("Times New Roman", Font.BOLD, 14)); 
lblNewLabel_1.setBounds(242, 11, 76, 14); 
contentPane.add(lblNewLabel_1); 

JLabel lblNewLabel_2 = new JLabel("Reading Level"); 
lblNewLabel_2.setFont(new Font("Times New Roman", Font.BOLD, 14)); 
lblNewLabel_2.setBounds(338, 11, 93, 14); 
contentPane.add(lblNewLabel_2); 

JLabel lblNewLabel_3 = new JLabel("Current Book"); 
lblNewLabel_3.setFont(new Font("Times New Roman", Font.BOLD, 14)); 
lblNewLabel_3.setBounds(459, 11, 100, 14); 
contentPane.add(lblNewLabel_3); 

try{ 

    Class.forName("org.sqlite.JDBC"); 
    String path=student.class.getResource("Booklander.sqlite").getPath(); 
    Connection connection=DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Gozie\\Desktop\\Database\\Booklander.sqlite"); 
    String SQL="select firstName,GradeLevel,ReadingLevel from Student,Login where firstName=? AND GradeLevel=? AND ReadingLevel=?"; 
    Statement statement=connection.createStatement(); 
    ResultSet rs=statement.executeQuery(SQL); 

    while(rs.next()) 
    { 
    String FN= rs.getString("firstName"); 
    int GL = Integer.parseInt("GradeLevel"); 
    int RL= Integer.parseInt("ReadingLevel"); 

    textField.setText(FN); 
    System.out.println(""+FN); 
    textField_3.setText(String.valueOf(GL)); 
    System.out.println(GL); 
    textField_2.setText(String.valueOf(RL)); 



    } 
    connection.close(); 
    statement.close(); 

} 
catch(Exception e){System.out.println("Error"); 
    } 


private static void addPopup(Component component, final JPopupMenu popup) { 
component.addMouseListener(new MouseAdapter() { 
    public void mousePressed(MouseEvent e) { 
     if (e.isPopupTrigger()) { 
      showMenu(e); 
     } 
    } 
    public void mouseReleased(MouseEvent e) { 
     if (e.isPopupTrigger()) { 
      showMenu(e); 
     } 
    } 
    private void showMenu(MouseEvent e) { 
     popup.show(e.getComponent(), e.getX(), e.getY()); 
    } 
}); 
} 
} 

また、ここであなたがそれを必要とする場合は、データベースからいくつかの写真です。 http://i.imgur.com/kLtxfXh.png

http://i.imgur.com/eZ9uatX.png

私の代わりにメソッドを使用して3つの値を返すべきでしょうか?または、間違ったコードを使用しましたか?

+0

エラーが発生しましたか(例外)、データが予期しないだけですか? – DevilsHnd

+0

私はちょうどデータを取得していません。 –

答えて

0

SQLクエリを作成するときは、必ず不要な空白文字列を削除してください。ほとんどのログイン名とパスワードは、英数字の使用のためにデータベーステーブル内のSTRINGデータ型です。したがって、クエリでデータを処理する必要があります。たとえば、Stringデータ型をアポストロフィ( ')で囲む必要があります。

String query = "SELECT * FROM Login where USERNAME = '" + suppliedUserNameVariable + 
"' AND PASSSWORD = '" + suppliedPasswordVariable + "';"; 

SQLクエリ文字列内にアポストロフィが表示されていますか?わかりやすくするために、実際の変数を使用してSQLクエリ文字列に指定されたデータを渡してみてください。

また、レターケースが適切に処理されていることを確認することもできます。

+0

情報ありがとうございます。 –

関連する問題