import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import mysql.sqlcon;编译通过,只是在验证数据密码时,输入数库中用户、密码正确值,却不能得到预期结果
sqlcon conn = new sqlcon();
String user = tfUser.getText();
String pw = tfPw.getText();
if(conn.sqlcontest())
{

if (user.equals(conn.getx()) & pw.equals(conn.gety()))
System.out.println ("验证成功!"); //这句语一直执行不到,却不知哪错了,大家帮忙看看。。只是执行以下三行。。
else System.out.println ("验证错误!");
System.out.println (conn.getx());
System.out.println (conn.gety());
}
//--------------------------------------以下源程序-------------------------- public class  login extends JPanel implements ActionListener
{

JTextField tfUser, tfPw; 

public login()
{
JLabel lUser, lPw;

JButton bOk;
JButton bCancel;
lUser = new JLabel("用户名:");
lPw = new JLabel("密 码:");

tfUser = new JTextField(10);
tfPw = new JTextField(10);

bOk = new JButton("确(C)定");
bOk.setMnemonic(KeyEvent.VK_C);
bOk.setActionCommand("确(C)定");

bCancel = new JButton("取(E)消");
bCancel.setMnemonic(KeyEvent.VK_E);
bCancel.setActionCommand("取(E)消");

bOk.addActionListener(this);
bCancel.addActionListener(this);

add(lUser);
add(tfUser);
add(lPw);
add(tfPw);
add(bOk);
add(bCancel);
}  

public void actionPerformed(ActionEvent e)
{

if(e.getActionCommand().equals("确(C)定"))
{
sqlcon conn = new sqlcon();
String user = tfUser.getText();
String pw = tfPw.getText();
if(conn.sqlcontest())
{

if (user.equals(conn.getx()) & pw.equals(conn.gety()))
System.out.println ("验证成功!");
else System.out.println ("验证错误!");
System.out.println (conn.getx());
System.out.println (conn.gety());
}

}

else if(e.getActionCommand().equals("取(E)消"))

System.out.println("取(E)消");
}
public static void main(String[] args)
{
int wy = 200, wx = 200;
int w, h;

JFrame jf = new JFrame("XXX系统");
jf.getContentPane().add(new login());
w = (int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth());
h = (int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight());
jf.setLocation((w-wx)/2, (h-wy)/2);
jf.setSize(wx,wy);
jf.setVisible(true);
jf.setResizable(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}//------------------------------------------------------------------------------package mysql;import java.sql.*;public class sqlcon
{
boolean con = false;
String x, y;
public sqlcon()
{
Stringurl= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Hotel";
String user = "sa";
String password = "123";
String sqlStr = "select id, pw from hUser";
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection(url, user, password);
Statement st = conn.createStatement();

ResultSet  rs = st.executeQuery(sqlStr);
while(rs.next())
{
x = (String)(rs.getString("id"));
y = (String)(rs.getString("pw"));
}


rs.close();
            st.close();
            conn.close();
con = true;
}

catch(Exception err)
{
err.printStackTrace(System.out);
con = false;
}


}
public boolean sqlcontest()
{
return con;
}

public String getx()
{
return x;
}

public String gety()
{
return y;
}

}

解决方案 »

  1.   

    if (user.equals(conn.getx()) & pw.equals(conn.gety())//用位与运算判断真假啊? 没用过
      

  2.   

    if (user.equals(conn.getx()) & pw.equals(conn.gety()))//用位与进行比较吗? 头一次听说
      

  3.   

    老兄,& 即是按位与运算符也是逻辑与运算符&&是短路与运算符。。
      

  4.   

    你查找出来的x = (String)(rs.getString("id"))和y = (String)(rs.getString("pw"))与你的String user = tfUser.getText()和String pw = tfPw.getText()数据不一致,你看看他们之间的长度就知道了。我同样遇到这样的问题!
      

  5.   


    if ((user.tirm()).equals((conn.getx().trim())) && ((pw.trim()).equals((conn.gety().trim())))把你要比较的值都先去掉空格,然后比较
    注意你的逻辑运算符不对,应该是&&