标题:登入界面账号密码是访问数据库,但登入问题时if判断时就是执行不了
只看楼主
张贤明
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2018-3-3
结帖率:100%
已结贴  问题点数:10 回复次数:7 
登入界面账号密码是访问数据库,但登入问题时if判断时就是执行不了
while(res.next()){
            System.out.println(res.getString("userid"));
            if(drzh.getText().equals(res.getString("userid"))){     //这个老是不执行
            System.out.println(0);
            if((drmm.getText()).equals(res.getString("password"))){
            view.setText("登入成功");
            System.out.println("1");
                }

那个if语句中判断账号正确与否就是不执行


完整程序为
import java.awt.*;
import java.awt.event.*;
import *;
import *;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.*;

public class test{
    public void Dframe(){
    JFrame dr=new JFrame("登入界面");
    dr.setLayout(null);
    dr.setBounds(700,100,200,200);
    Container con1=dr.getContentPane();
    dr.setVisible(true);
   
    JLabel lable1=new JLabel("账号");
    lable1.setBounds(0,20,100,20);
    con1.add(lable1);
   
    final JTextField drzh=new JTextField();
    drzh.setBounds(30,20,100,20);
    drzh.setBackground(Color.yellow);
    con1.add(drzh);
   
    final JLabel lable2=new JLabel("密码");
    lable2.setBounds(0,40,100,20);
    con1.add(lable2);
   
    final JTextField drmm=new JTextField();
    drmm.setBounds(30,40,100,20);
    drmm.setBackground(Color.yellow);
    con1.add(drmm);
   
    final JButton drbt=new JButton("登入");
    drbt.setBounds(40,70,60,20);
    drbt.setBackground(Color.blue);
    con1.add(drbt);
   
    final JLabel view=new JLabel();                                    //创建错误提示框
        view.setBounds(40, 100, 200,21);
        con1.add(view);
   
    drbt.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
        Connection con;
        final ResultSet res;
        try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        System.out.println("驱动加载成功");
        con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=ADM","sa","sa");
        System.out.println("数据库连接成功");
        String sql="select * from USERINTO";
      PreparedStatement stmt=con.prepareStatement(sql);
        res=stmt.executeQuery();
        while(res.next()){
            System.out.println(res.getString("userid"));
            if(drzh.getText().equals(res.getString("userid"))){
            System.out.println(0);
            if((drmm.getText()).equals(res.getString("password"))){
            view.setText("登入成功");
            System.out.println("1");
                }
                else{view.setText("密码错误");System.out.println("2");}
                break;
            }
            //view.setText("账号不存在");
        
        }

        } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    });

    }
    public static void main(String args[]){
        test main=new test();
        main.Dframe();
   
    }
}
搜索更多相关主题的帖子: res System out println new 
2018-05-23 20:57
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:10 
程序代码:
String password = null;
try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    System.out.println("驱动加载成功");
    con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=ADM","sa","sa"); 
    System.out.println("数据库连接成功");
    String sql="select password from USERINTO where userid=?";
    PreparedStatement stmt=con.prepareStatement(sql);
    stmt.setString(1,drzh.getText().trim());
    res=stmt.executeQuery();
    if(res.next()){
        password=res.getString("password");
    }
} catch (Exception e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

if(password==null){
    view.setText("账号不存在");
}else{
    if(password.equals(drmm.getText())){
        view.setText("登入成功");
    }else{
        view.setText("密码错误");
    }
}
     

剑栈风樯各苦辛,别时冰雪到时春
2018-05-23 21:33
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
先试着分离显示和数据库访问的处理

剑栈风樯各苦辛,别时冰雪到时春
2018-05-23 21:34
张贤明
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2018-3-3
得分:0 
回复 2楼 林月儿
我按着你的方法试了下,可还是这个判断不能执行                    if(password.equals(drmm.getText())){
                                                                       view.setText("登入成功");

完整代码如下:
import java.awt.*;
import java.awt.event.*;
import *;
import *;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.*;

public class test{
    public void Dframe(){
    JFrame dr=new JFrame("登入界面");
    dr.setLayout(null);
    dr.setBounds(700,100,200,200);
    Container con1=dr.getContentPane();
    dr.setVisible(true);
   
    JLabel lable1=new JLabel("账号");
    lable1.setBounds(0,20,100,20);
    con1.add(lable1);
   
    final JTextField drzh=new JTextField();
    drzh.setBounds(30,20,100,20);
    drzh.setBackground(Color.yellow);
    con1.add(drzh);
   
    final JLabel lable2=new JLabel("密码");
    lable2.setBounds(0,40,100,20);
    con1.add(lable2);
   
    final JTextField drmm=new JTextField();
    drmm.setBounds(30,40,100,20);
    drmm.setBackground(Color.yellow);
    con1.add(drmm);
   
    final JButton drbt=new JButton("登入");
    drbt.setBounds(40,70,60,20);
    drbt.setBackground(Color.blue);
    con1.add(drbt);
   
    final JLabel view=new JLabel();                                    //创建错误提示框
        view.setBounds(40, 100, 200,21);
        con1.add(view);
   
    drbt.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
        Connection con;
        final ResultSet res;
        String password=null;
        try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        System.out.println("驱动加载成功");
        con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=ADM","sa","sa");
        System.out.println("数据库连接成功");
         String sql="select password from USERINTO "+" where userid=?";
            PreparedStatement stmt=con.prepareStatement(sql);
            stmt.setString(1,drzh.getText());
            res=stmt.executeQuery();
            if(res.next()){
                password=res.getString("password");
            }
        
            con.close();
            res.close();
        } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        
        if(password==null){
            view.setText("账号不存在");
        }else{
            //System.out.println("3"+drmm.getText());
            if(password.equals(drmm.getText())){
                //System.out.println("4"+drmm.getText());
                view.setText("登入成功");
            }else{
                view.setText("密码错误");
            }
        }
        }
    });

    }
    public static void main(String args[]){
        test main=new test();
        main.Dframe();
   
    }
}
2018-05-23 23:26
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
不能执行说明条件不满意啊,打印pasdword看看是什么

剑栈风樯各苦辛,别时冰雪到时春
2018-05-24 07:02
张贤明
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2018-3-3
得分:0 
回复 5楼 林月儿
2018-05-24 09:37
张贤明
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2018-3-3
得分:0 
回复 5楼 林月儿
发现问题了,就是数据库表格里的内容后面都是有空格的,所以一直对不上号,但我添加进去得东西每空格,怎么已添加完后再看就有了呢
2018-05-24 09:50
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
回复 7楼 张贤明
不是有trim函数吗?去除两边空格就好了呀

剑栈风樯各苦辛,别时冰雪到时春
2018-05-24 23:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487213-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.139955 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved