Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
身份验证--在java中使用户名和密码成为全局的_Java_Mysql - Fatal编程技术网

身份验证--在java中使用户名和密码成为全局的

身份验证--在java中使用户名和密码成为全局的,java,mysql,Java,Mysql,我想验证一个用户。 为此,我使用mysql连接。 代码如下: JTextField txt_Username= new JTextField(); String Username; txt_Username.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent arg0) { { Username= txt_Usernam

我想验证一个用户。 为此,我使用mysql连接。 代码如下:

 JTextField txt_Username= new JTextField();
 String Username;
 txt_Username.addFocusListener(new FocusAdapter() {
        @Override
        public  void focusLost(FocusEvent arg0) {
     {
         Username= txt_Username.getText();
     }
 });
同样,还有密码的代码。 现在,我希望这个用户名和密码在其本地范围之外,以便单击JButton将触发sql数据库并使用上述用户名和密码进行身份验证

我对Java很幼稚。有人能帮忙吗

我这里有完整的代码。请告诉我,我需要了解我哪里出了问题:

     import java.awt.EventQueue;


 public class Frame{

 private private JFrame frame1;
 private JTextField textFieldUserName;
 private JTextField txtPassword;

 public String textUserValue;


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

                window.frame1.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 * @throws SQLException 
 */
public multipleFrame() throws SQLException {
    initialize();
}

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

    JLabel lblNewLabel = new JLabel("");
    lblNewLabel.setIcon(new ImageIcon("C:\\sad.jpg"));
    lblNewLabel.setBounds(10, 36, 196, 187);
    frame.getContentPane().add(lblNewLabel);

    JLabel lbl_Password = new JLabel("PASSWORD");
    lbl_Password.setBackground(new Color(128, 128, 128));
    lbl_Password.setOpaque(true);
    lbl_Password.setBounds(217, 140, 75, 14);
    frame.getContentPane().add(lbl_Password);


    final Connection con =DriverManager.getConnection("jdbc:mysql://localhost:3306/schema","user","pwd");
    final JTextField textFieldUserName = new JTextField();
    textFieldUserName.addFocusListener(new FocusAdapter() {


        @Override
        public  void focusLost(FocusEvent arg0) {
             String textUserValue = textFieldUserName.getText();
             System.out.println(textUserValue+"  hi");
             String textUserValue1 =textUserValue;

        }
    });
    System.out.println(textUserValue+"  HI");

    textFieldUserName.setBounds(324, 79, 108, 20);
    frame.getContentPane().add(textFieldUserName);
    textFieldUserName.setColumns(10);
    System.out.println();

    JLabel label = new JLabel("USERNAME");
    label.setOpaque(true);
    label.setBackground(Color.GRAY);
    label.setBounds(216, 82, 75, 14);
    frame.getContentPane().add(label);

    txtPassword = new JTextField();
    txtPassword.addFocusListener(new FocusAdapter() {
        @Override
        public void focusLost(FocusEvent arg0) {
             String textPasswordValue = txtPassword.getText();
             System.out.println(textPasswordValue+"  hi");
        }
    });
    txtPassword.setColumns(10);
    txtPassword.setBounds(324, 137, 108, 20);
    frame.getContentPane().add(txtPassword);

    JButton btnLogin = new JButton("LOGIN");
    btnLogin.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

        }
    });
    btnLogin.setBounds(262, 200, 91, 23);
    frame.getContentPane().add(btnLogin);

    PreparedStatement stmt1 = null;
                try {
                    stmt1 = con.prepareStatement("select username from LOGIN_TABLE where    username='"+textUserValue+"'");
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                ResultSet result1 = null;
                try {
                    result1 = stmt1.executeQuery();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    while (result1.next()) {
                        String user_name_db=result1.getString("username");
                        System.out.println(user_name_db);
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    }
 }

将Username变量转换为public。并将其放在类中,而不是任何方法中

例如:

public String Username;
或者,如果你想保留它的隐私,你可以为它创建一个
.getMethod

public String getUsername(){
    return Username;
}

您只需使用getter和setter创建一个模型类即可:

类UserModel.java

public String Username;

public String getUserName()
{
    return Username;
}

public void setUserName(String USER_NAME)
{
   this.Username = USER_NAME;
}
main.java中,

UserModel userObj = new UserModel();

txt_Username.addFocusListener(new FocusAdapter() {
    @Override
    public  void focusLost(FocusEvent arg0) {
 {
     userObj.setUserName(txt_Username.getText());
     //Username= txt_Username.getText();
 }
});
要在main.java中的任何位置检索它,请使用

  String userName = userObj.getUserName();

即使您对任何语言都很幼稚,逻辑仍然是一样的。我如何从方法中访问用户名?请参阅我上一个答案顶部的编辑,了解您的编辑。