извлечение строк из базы данных в ArrayList с последующим использованием его для включения определенных элементов в JMenuBar - PullRequest
0 голосов
/ 14 сентября 2018

Это мой код:

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
            con = new DBConnect().getConnection();
            String sql = "SELECT * FROM m_auth WHERE USERGROUP = '"+txtUSERGROUP.getText()+"' order by NO asc";
            st = con.createStatement();
            rs = st.executeQuery(sql);

            while(rs.next()) {
                List.add(rs.getString("AuthCode"));
                System.out.println(List);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(rootPane, e);
        }        
    }

Допустим, группа пользователей имеет статус «Администратор», и после завершения кода, приведенного выше, эти элементы хранятся в ArrayList:

[F01]
[F0101]
[F0102]
[P01]
[P0101]
[P010101]
[P010102]
[P0102]

что мне нужно выяснить дальше, так это то, как я могу использовать элементы в ArrayList для включения некоторого меню в menuBar, чье имя хранится в ArrayList, что-то вроде этого:

//read all the Item in the ArrayList, then use the List items to set the referenced menu name to be enabled 

F01.setEnabled(true);
F0101.setEnabled(true);
F0102.setEnabled(true);
P01.setEnabled(true);
P0101.setEnabled(true);
P010101.setEnabled(true);
P010102.setEnabled(true);
P0102.setEnabled(true);

1 Ответ

0 голосов
/ 14 сентября 2018

Вы должны объявить эту переменную List вне цикла.В противном случае вы просто создаете его и удаляете после каждой итерации.

// Consider doing this whole method once. Somewhere else
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        con = new DBConnect().getConnection();
        String sql = "SELECT * FROM m_auth order by no asc";
        st = con.createStatement();
        rs = st.executeQuery(sql);
        // listOfAuthCodes could also be a class variable
        ArrayList<String> listOfAuthCodes = new ArrayList<String>();

        while(rs.next()) {                
            listOfAuthCodes .add(rs.getString("AuthCode"));
        }
        // You can now have a list of AuthCode's from the db
        // 'userHasAdminAuthCode ' should be a class variable to use in another method
        userHasAdminAuthCode = doesAdminAuthCodeExistInTheDatabase(listOfAuthCodes);
    } catch (Exception e) {
        JOptionPane.showMessageDialog(rootPane, e);
    }        
}

private boolean doesAdminAuthCodeExistInTheDatabase(List<String> authCodesFromDatabase)
{
    for(String s : authCodesFromDatabase)
    {
        if(s.equals("Admin"))
        {
            return true;
        }
    }
    return false;
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    if(this.userHasAdminAuthCode) {
        adminLogin();
    }
    else {
        staffLogin();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...