我正在创建一个应用程序,如果用户已经登录,我希望应用程序自动从文本文件登录。目前,在文本文件中,我具有与数据库条目匹配的“alex | ppp”。 以下方法被称为第一Java .equals()在字符串相等时返回false
private void rememberedLogIn(){
String filename = "UserInfo.txt";
String info = "";
String user = "";
String pass = "";
try{
FileInputStream fIn = openFileInput(filename);
BufferedReader r = new BufferedReader(new InputStreamReader(fIn));
info = r.readLine();
}catch(IOException e){
e.printStackTrace(System.err);
}
for(int i =0; i < info.length();i++){
if(info.charAt(i) == '|'){
user = info.substring(0,i);
pass = info.substring(i+1);
GlobalVar.loggedIn= true;
break;
}
}
new InitialStuff().execute(user,pass);
}
我有双重检查用于用户的值,并通过与他们是“亚历克斯”和预计“PPP”。接下来InitialStuff被调用,这是相关代码:
public class InitialStuff extends AsyncTask<String, Void, Toon>{
int prog = 0;
@Override
protected Toon doInBackground(String... params) {
android.os.Debug.waitForDebugger();
Toon toon = null;
Database db = new Database();
db.establishConnection();
if(db.tryLogIn(params[0], params[1])){
prog = 2;
publishProgress();
toon = db.getToonFromDB(params[0]);
prog = 4;
}else prog = 3;
publishProgress();
return toon;
}}
一次我打电话db.tryLogin(出现问题),它看起来像这样
public boolean tryLogIn(String toonName, String toonPass){
try{
while(!connected) establishConnection();
String sqlQuery = "SELECT Password FROM Toons WHERE Name LIKE '" + toonName+"';";
Statement stmt = con.createStatement();
ResultSet rSet = stmt.executeQuery(sqlQuery);
if(rSet.next()){
String dbPass = rSet.getString(1).trim();
if(dbPass.equals(toonPass)) //PROBLEM OCCURS HERE
return true;
}
}
catch(Exception e){ }
return false;
}
我已检查看到DBPASS回来从数据库中作为“ppp”匹配toonPass,但它将跳过返回true并返回false。
如果有帮助,这是信息蚀给我关于两个
toonPass “PPP”(ID = 830041185816) 计数3
的hashCode 0
偏移5
值(ID = 830041185744)
[0]一个
[1]升
[2] E
[3] X
[4] |
[5] p
[6] p
[7] p
DBPASS “PPP”(ID = 830041708816) 计数3
的hashCode 0
偏移0
值(ID = 830041709136)
[0] p
[1] p
[2] p
Pleaes注意,我还试图PASSI如果与问题有关并且结果相同,则将“ppp”改为tryLogin()方法而不将其作为子字符串。
编辑:我解决了这个问题... sorta。我刚刚停止使用.equals()方法,而是使用for循环比较每个字符串中的字符彼此
无关,但SQL注入。 –
这是我第一次在编程中处理外部数据库,我不得不自己教给自己,所以请原谅我缺乏知识......你是什么意思? – user3293629
SQL注入示例之一:http://xkcd.com/327/ - > http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables- xkcd-comic-work – Pshemo