Sqlite prüfen ob Wert in Spalte vorhanden ist
Frage ich mich, ob diese Methode richtig ist zu überprüfen, ob der Wert von _username bereits in der Spalte "Benutzername"
public boolean verification(String _username) throws SQLException{
Cursor c = dataBase.rawQuery("SELECT * FROM "+TABLE_NAME+" WHERE "+KEY_USERNAME+"="+_username, null);
if (c!=null)
return true; // return true if the value of _username already exists
return false; // Return false if _username doesn't match with any value of the columns "Username"
}
Gibt es einen besseren Weg, um das gleiche zu tun, ich bin wirklich nicht sicher über dieses, es schien das richtige für mich.
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Hinblick auf die Sicherheit und Reinheit, ja, das ist sicher.
Ich empfehlen Ihnen eine Verwendung von
?
, die aufgerufen wird, Platzhalter. Jeder Platzhalter wird ersetzt mit dem Wert aus string-array in der gleichen Reihenfolge. Dies nennt man auch eingestellt-Anweisung als eine Verteidigung gegen SQL-injection. Wenn Ihre Arbeit mit dem Cursor abgeschlossen ist, lassen Sie es Los.finally
Trumpfreturn
kommt nicht natürlich für mich.Hüten Sie sich vor von SQL-injection-Angriffe! Sie sollten immer eine parametrisierte Abfrage verwenden:
(Ehrlich gesagt bin ich nicht sicher, wie Sie Ihre erste Abfrage nicht werfen eine Ausnahme, da Sie vergessen haben, wickeln Sie die Zeichenfolge in Anführungszeichen...)
Auch
rawQuery()
immer wieder einen Cursor, müssen Sie prüfen, ob der Cursor leer, nichtnull
.Als für "das beste" Ansatz, dies funktioniert sehr gut, aber ich empfehle, schließen Sie den Cursor, um Ressourcen freizusetzen. Alle zusammen: