丨丨丨丨丨丨丨丨丶 2022-11-18 16:38 采纳率: 83.3%
浏览 59
已结题

登录界面连接数据库进行不同用户的登录

这是登录界面连接数据库进行不同用户的登录。我也已经在数据库里设置了denglu表和denglu2的账号密码。但是他提醒我数据库可以连接成功,两个false。denglu表的账号密码都为123,denglu2的账号和密码都为1.




```要被折磨死了。如果可以的话请回答我全部的代码。


package denglu;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class Load_GUI extends JFrame implements ActionListener {

    static Load_GUI lg = null;        //放在Main函数中,用于加载窗体信息。";
    /* Lable控件 */
    JLabel l1 = new JLabel("XxxXX管理系统");
    JLabel l2 = new JLabel("用户名:");
    JLabel l3 = new JLabel("密码:");
    /* 控制Label中的字体风格 */
    Font f = new Font("楷体", Font.BOLD, 20);
    Font f2 = new Font("楷体", Font.BOLD, 15);
    /* 下拉单 */
    JComboBox jc1 = new JComboBox();
    /* 按钮 */
    JButton bt1 = new JButton("登录");
    JButton bt2 = new JButton("取消");
    /* 文本框 */
    JTextArea textarea;
    JTextField t1 = new JTextField();            //textField控件可以获取获取文本内容//
    JPasswordField t2 = new JPasswordField();        //密码输入框的专用控件
    private int defaultCloseOperation = HIDE_ON_CLOSE;

    {
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public Load_GUI() {
        l1.setFont(f);        //字体风格Font参数和Label控件 名称为l1的对象 绑定。
        l2.setFont(f2);
        l3.setFont(f2);
        l1.setBounds(new Rectangle(100, 20, 220, 40));
        l2.setBounds(new Rectangle(40, 60, 200, 40));
        l3.setBounds(new Rectangle(40, 90, 200, 40));
        bt1.setBounds(new Rectangle(40, 180, 120, 25));
        bt2.setBounds(new Rectangle(220, 180, 120, 25));
        t1.setBounds(new Rectangle(100, 70, 180, 26));
        t2.setBounds(new Rectangle(100, 100, 180, 26));
        jc1.setBounds(new Rectangle(120, 130, 100, 26));

        /* 给对象名为jc1的Combobox控件,添加内容。 */
        jc1.addItem("管理员");
        jc1.addItem("员工");
        {
            bt2.addActionListener(new ActionListener() {//该事件监听用于 监听按钮"取消"事件。
                @Override
                public void actionPerformed(ActionEvent e) {//如果用户按下”取消“按钮,程序退出。
                    System.exit(0);
                }
            });
            bt1.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String name = t1.getText(); // 获取文本框内的用户名
                    String password = t2.getText(); // 获取文本框内的密码
                    if (0 == name.length()) {
                        JOptionPane.showMessageDialog(null, "账号不能为空");
                        t1.grabFocus();
                        return;
                    }
                    if (0 == password.length()) {
                        JOptionPane.showMessageDialog(null, "密码不可为空!");
                        t2.grabFocus();
                        return;
                    }
                    if (jc1.getSelectedItem().toString().equals("管理员")) {
                        if (check(name, password)) {
                            JOptionPane.showMessageDialog(null, "登陆成功");
                          //  new user1();
                        } else
                            JOptionPane.showMessageDialog(null, "密码错误");
                    }
                    /* 采购员的检查 */
                    if (jc1.getSelectedItem().toString().equals("员工")) {
                        if (check(name, password)) {
                            JOptionPane.showMessageDialog(null, "登陆成功");
                         //   new user3();
                        } else
                            JOptionPane.showMessageDialog(null, "密码错误");
                    }
                }
            });
            this.setTitle("登录");        //设置窗体标题名称
            this.setLayout(null); // 窗体布局设置为自定义,这行代码不可更换到其他位置//
            this.setSize(400, 300);
            this.add(bt2);
            this.add(bt1);
            this.add(l1);
            this.add(l2);
            this.add(l3);
            this.add(t1);
            this.add(t2);
            this.add(jc1);
            this.setBounds(800, 300, 400, 300);        //设置窗体规格
            this.setDefaultCloseOperation(1);
            this.setVisible(true);                    //窗体可以看见,如果是false,那么运行程序后窗体看不见,。
            this.setResizable(false);                //setResizable用于控制窗体大小可拉伸与否。false表示,窗体大小定死了。
        }
    }

    public static void main(String args[]) {
        lg = new Load_GUI();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
    }

    public boolean check(String name, String password) {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        boolean result = false;
        try {
            String url = "jdbc:sqlserver://localhost;DatabaseName=yaoDB";
            String username = "sa";
            String passwords = "123456wql";
            Connection c = DriverManager.getConnection(url, username, passwords);
            if (c != null) {
                System.out.println("数据库连接成功!");
            } else {
                System.out.println("数据库连接失败!");
            }
            Statement s = c.createStatement();
            if (jc1.getSelectedItem().toString().equals("管理员")) {
                String sql = "select * from denglu_purchase " + "where zhanghao = '" + name
                        + "' and mima = '" + password + "'";
                ResultSet rs = s.executeQuery(sql);
                while (rs.next()) {
                    if (rs.getString("zhanghao").equals(name) && rs.getString("mima").equals(password)) {
                        result = true;
                    } else {
                        System.out.println(rs.getString("zhanghao").equals(name));
                        System.out.println(rs.getString("mima").equals(password));
                        return false;
                    }
                }
            } else {
                if (jc1.getSelectedItem().toString().equals("员工")) {
                    String sql = "select * from denglu2 " + "where zhanghao = '" + name
                            + "' and mima = '" + password + "'";
                    ResultSet rs = s.executeQuery(sql);
                    while (rs.next()) {
                        if (rs.getString("zhanghao").equals(name)
                                && rs.getString("mima").equals(password)) {
                            result = true; // 如果用户名和密码都正确,那么就将result返回为true;
                        } else
                            return false;
                    }
                }
            }
        } catch (SQLException e2) {
            e2.printStackTrace();
        }
        return result;
    }

  • 写回答

4条回答 默认 最新

  • 游一游走一走 2022-11-18 16:59
    关注

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 赞助了问题酬金15元 11月18日
  • 创建了问题 11月18日

悬赏问题

  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan