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

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();
}}

喵喔喔
浏览 162回答 3
3回答

料青山看我应如是

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();}}}

拉风的咖菲猫

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

互换的青春

看看你查询出来的结果里面是不是包含空格?删除字符串首部和尾部的空格,用.equals().Trim ( string ) 试试 !
打开App,查看更多内容
随时随地看视频慕课网APP