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 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。