【发布时间】:2011-08-05 14:58:03
【问题描述】:
与数据库连接时,以下代码中的字符串匹配未正确完成。两个值相同但未执行相应的操作。谁能帮我纠正这个问题?提前致谢!
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);
}
});
}
}
感谢朋友的回复。。上面代码中的确切问题是我们必须修剪n比较,否则应该在构造函数中包含代码“jf1.setText(null);” .
【问题讨论】:
-
你不应该使用
==来比较字符串,而是使用.equals(..)方法
标签: java javabeans string-matching