我正在使用简单的代码来保存和检索Sqlite数据库。我的问题是我的代码总是使用else部分甚至字符串是相同的。
Toast.makeText(getApplicationContext(), "No UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();
而不是
Toast.makeText(getApplicationContext(), "Yes UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();
我用吐司和调试模式检查了输出。 utext的值等于str,ptext的值等于str1。我在这里弄错了吗?我找不到任何东西。
http://postimg.org/image/huvmxhgup/
public void onClick(View v) {
utext=t1.getText().toString();
ptext=t2.getText().toString();
Cursor c = db.rawQuery("SELECT * FROM " + tbl_name+" WHERE USERNAME= '"+utext+"' AND PASSWORD= '"+ptext+"'", null);
if(c.moveToLast() ) {
str=c.getString(c.getColumnIndex("USERNAME"));
str1=c.getString(c.getColumnIndex("PASSWORD"));
Toast.makeText(getApplicationContext(), "True : "+str+", "+str1, Toast.LENGTH_LONG).show();
}
else
Toast.makeText(getApplicationContext(), "FALSE", Toast.LENGTH_LONG).show();
if(str==utext || str1==ptext)
Toast.makeText(getApplicationContext(), "Yes UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();
else
Toast.makeText(getApplicationContext(), "No UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();
}
答案 0 :(得分:1)
在java中,==
比较对象引用而不是内容。
==
检查两个字符串是否是同一个对象,而.equals()
或.compareTo()
检查两个字符串是否具有 相同的价值。
您可以使用java中的方法.equals()
或.compareTo()
来比较字符串
因此,替换
if(str==utext || str1==ptext)
与
if(str.equals(utext) || str1.equals(ptext))
或
if(str.compareTo(utext)==0 || str1.compareTo(ptext)==0)
答案 1 :(得分:1)
您应始终使用.equals()
进行字符串比较。将您的代码更改为此。
if(str.equals(utext) || str1.equals(ptext))
Toast.makeText(getApplicationContext(), "Yes UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();
else
Toast.makeText(getApplicationContext(), "No UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();