2011-08-05 77 views
0

字符串匹配在与数据库连接时以下代码中没有正确完成。两个值都是相同的,但相应的操作没有执行。任何人都可以帮我解决这个问题吗?提前致谢!java中的字符串匹配操作

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.sql.*; 
import javax.swing.JFrame; 
public class NewJFramefin extends javax.swing.JFrame implements ActionListener 
{ 

public NewJFramefin() 
{ 
    initComponents(); 
    add(jl1); 
    add(jf1); 
    jb1.setActionCommand("OK"); 
    jb1.addActionListener(this); 
    add(jb1); 
    jb2.setActionCommand("CANCEL"); 
    jb2.addActionListener(this); 
    add(jb2); 
    jb3.addActionListener(this); 
    add(jb3); 
} 

public void closewindow() 
{ 
    System.exit(1); 

} 
public void actionPerformed(ActionEvent e) 
{ 
     String find=jf1.getText(); 
     String ev=e.getActionCommand(); 
     String check; 
     String str="jdbc:odbc:dsn1"; 
     try 
     { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      Connection con=DriverManager.getConnection(str); 
      Statement s=con.createStatement(); 
      s.execute("select * from Table1"); 
      ResultSet res=s.getResultSet(); 
      if(res!=null) 
      { 
       while(res.next()) 
       { 
        check=res.getString(1); 
        System.out.println("STRING FROM DB:"+check + find); 
        if(check==find) 
        { 
         System.out.println("MEANING:"+res.getString(2)); 
        } 
        if(ev.equalsIgnoreCase("OK") &&(find.equalsIgnoreCase(check))) 
        { 
         jf2.setText(res.getString(2)); 
         add(jf2); 

        } 
        else if(ev.equalsIgnoreCase("CANCEL")) 
        { 
         jf2.setText(" cancelled "); 
         add(jf2); 
         jf1.setText(" "); 
         add(jf1); 
        } 
        else if(ev.equalsIgnoreCase("EXIT")) 
        { 

         closewindow(); 
        } 

       } 
      } 


     }   
     catch(Exception ew) 
     { 

     } 
} 


public static void main(String args[]) 
{ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new NewJFramefin().setVisible(true); 
     } 
    }); 
} 
} 

感谢您的回复friends..the在上面的代码确切的问题是,我们必须削减ñ比较,否则应包括代码“jf1.setText(NULL);”在构造函数。

+4

您不应该使用'=='比较字符串,而是使用'.equals(..)'方法 –

回答

4

问题可能是

if(check==find) 

应该

if(check.equals(find)) 

==没有做在Java中的字符串比较;它会检查对象是否相同(同一对象)

0

切勿将字符串实例与==进行比较。使用string1.equals(String2)==检查两个变量是否保存相同的引用,而不是如果两个字符串包含相同的字符。

0

操作A == B用于标识两个对象引用都指向同一个对象。

操作A.equals(B)是识别两个对象的引用都包含相同的值。

由于您的字符串是独立构建的(一个是你写的代码结构,另一种是在JDBC层构造),他们不能被引用相同的对象,您需要使用等号运算符。

0

正如Hunter McMillen所说,你不应该使用==来比较字符串。两个字符串上使用==只有在它们是相同的String对象时才会返回true。另一方面,equals()方法将返回true,如果两个字符串具有相同的内容。