为了账号安全,请及时绑定邮箱和手机立即绑定

如下,为什么它无论是“==”还是“.equals()”都先试试不相等的!求解决!

如下,为什么它无论是“==”还是“.equals()”都先试试不相等的!求解决!

喵喔喔 2022-05-26 19:15:02
import javax.swing.*;import java.awt.*;import java.sql.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JFrameDemo{String passwordD=null;public static String persontyDD=null;public JFrameDemo(){final JFrame frame1 = new JFrame("超市管理系统登陆界面");final JButton button = new JButton("登陆");JLabel labelName = new JLabel("请输入账号");JLabel labelNumber = new JLabel("请输入密码");final JTextField tfName = new JTextField(12);final JTextField tfNumber = new JTextField(12);JMenuBar menubar = new JMenuBar();JMenu mu = new JMenu("功能");JMenuItem help = new JMenuItem("帮助");JMenuItem quet = new JMenuItem("退出");button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Connection con;Statement sql;ResultSet rs = null;String fu="超级用户";if(e.getSource()==button){String idin = tfName.getText();String keyin = tfNumber.getText();try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");String url="jdbc:sqlserver://localhost:1433;databaseName=Supermarket";String user="sa";String password="123456";con=DriverManager.getConnection(url,user,password);sql = con.createStatement();rs = sql.executeQuery("SELECT * FROM password where ID='"+ idin + "'");while (rs.next()) {passwordD= rs.getString(2); persontyDD= rs.getString(3);}con.close();} catch (Exception g){System.out.println(g);}if (persontyDD!=null){frame1.dispose();ViewDemo frame=new ViewDemo();System.out.println(persontyDD);if(persontyDD==fu){System.out.println("1");}}}else{frame1.dispose();Close frame=new Close();}}} );public static void main(String args[]) {new JFrameDemo();}}
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

1、字符串判断内容相等用.equals();如果是比较是否是同一个对象(即内容和引用相同),则用==
2、passwordD= rs.getString(2); 改为:passwordD= rs.getString("passwordD");
persontyDD= rs.getString(3);改为:persontyDD= rs.getString("persontyDD");
因为你的数据库中字段的顺序和你getString后面的数字不一致。
写了个小程序,你看看。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class LCP_TEST extends Test{
public static void main(java.lang.String[] args) {
String url = "jdbc:oracle:thin:@100.100.100.129:1521:auxoms";
String user = "osm";
String password = "osm";
try {
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
String sql = " select 'aa' username,'123456' passwordD from dual";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
String username = rs.getString("username");
String passwordD = rs.getString("passwordD");
System.out.println("username:"+username);
System.out.println("passwordD:"+passwordD);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}



查看完整回答
反对 回复 2022-05-30
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

“==”肯定是不行的,因为两个字符串的地址可能不相同,应该用.equals(),不知是否是您写的有问题,其实更简单的是不用单独赋值一个fu,直接.equals("超级用户")就行了,你先试试。

查看完整回答
反对 回复 2022-05-30
?
互换的青春

TA贡献1797条经验 获得超6个赞

看看你查询出来的结果里面是不是包含空格?删除字符串首部和尾部的空格,用.equals().Trim ( string ) 试试 !

查看完整回答
反对 回复 2022-05-30
  • 3 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号