当连接到database.Both值时,下面的代码中没有正确地进行字符串匹配,但是相应的操作是n0t performed.Can,有人帮我纠正吗?提前感谢!
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,上面代码中的确切问题是,我们必须修剪n比较,否则应该在构造函数中包含代码"jf1.setText(null);“。
发布于 2011-08-05 07:02:51
问题可能是
if(check==find)
应该是
if(check.equals(find))
==不使用Java进行字符串比较;它检查对象是否相同(同一个对象)
发布于 2011-08-05 07:03:28
永远不要将字符串实例与==
进行比较。使用string1.equals(String2)
。==
检查两个变量是否具有相同的引用,而不是两个字符串是否包含相同的字符。
发布于 2011-08-05 07:03:48
A == B
操作是标识两个对象引用都指向同一个对象。
A.equals(B)
操作是标识两个对象引用都包含相同的值。
由于您的字符串是独立构造的(一个是在您编写的代码中构造的,另一个是在JDBC层中构造的)它们不能引用相同的对象,所以您需要使用相等操作符。
https://stackoverflow.com/questions/6958350
复制