xzxmustwin 2016-12-31 12:01 采纳率: 50%
浏览 4631
已结题

java如何调用其他类中的变量

初学者,最近在学着用窗体做一个个人记账本。其中我已经写好了load部分和register部分,连上数据库也都可以实现。然后在编写Accountbook这个类的时候我要知道我现在是哪个用户在登录并查询这个用户的记录。但是这个用户变量在load类中。怎么调用?
以下为部分源码:
load类:
import java.awt.*;

import javax.swing.*;

import java.sql.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Login extends JFrame implements ActionListener {
Connection conn;
Statement stat;
PreparedStatement ps;
ResultSet rs;
JButton load,reg;
JLabel userJLabel,passJLabel;
JPanel userJPanel, passJPanel,loadJPanel;
JTextField userJtf;
JPasswordField passJtf;
String user,pwd;

public static void main(String[] args) {
    Login login = new Login();
}

public Login(){
    super("登录");
    this.setSize(400,300);
    this.setLocation(300,200);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLayout(new GridLayout(4, 0));

    userJLabel = new JLabel("用户名:");
    userJtf = new JTextField(10);
    userJPanel = new JPanel();
    userJPanel.add(userJLabel);
    userJPanel.add(userJtf);
    this.getContentPane().add(userJPanel);

    passJLabel = new JLabel("密 码:");
    passJtf = new JPasswordField(10);
    passJPanel = new JPanel();
    passJPanel.add(passJLabel);
    passJPanel.add(passJtf);
    this.getContentPane().add(passJPanel);

    loadJPanel = new JPanel();
    load = new JButton("登录");
    load.addActionListener(this);
    loadJPanel.add(load);
    reg = new JButton("注册");
    reg.addActionListener(this);
    loadJPanel.add(reg);
    this.getContentPane().add(loadJPanel);

    this.setVisible(true);
    this.connection();
}

public void connection(){
    try {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/db_user";
        conn = DriverManager.getConnection(url,"root","root");
        stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this,"连接数据库错误!","错误对话框",JOptionPane.ERROR_MESSAGE);
    }
}

public void actionPerformed(ActionEvent e) {
    if(e.getSource() == load){
    try {
        ps=conn.prepareStatement("select * from tb_user where user=? and pwd=? ");
        ps.setString(1, userJtf.getText());
        ps.setString(2, new String(passJtf.getPassword()));

        rs = ps.executeQuery();

        if(rs.next())
        {
            user = rs.getString(1);
            pwd = rs.getString(2);
            JOptionPane.showMessageDialog(null, "登录成功!!!", "提示消息", JOptionPane.WARNING_MESSAGE);
            System.out.println("成功获取到密码和用户名from数据库");
            System.out.println(user + "\t" + pwd + "\t");
        }else
        {
            JOptionPane.showMessageDialog(null, "用户名或者密码错误,请重新输入!", "提示消息", JOptionPane.ERROR_MESSAGE);

        }           
    } catch (Exception ex) {}
    }
    if(e.getSource() == reg){
        Register register = new Register();
    }
}
}
Accountbook类中:
rs=stat.executeQuery("select * from tb_accountbook where user = '"+user+"'");
这个user怎么获取
  • 写回答

4条回答

  • ljheee 2017-01-01 03:22
    关注

    传递参数——构造Accountbook这个类的时候,加上参数。
    或者直接把load类中user当前用户,写成public static,然后在Accountbook这个类需要的时候,通过load.user获得。

    评论

报告相同问题?

悬赏问题

  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作