Checke om opjekt er null

Tags:    java mysql

Hej, jeg vil lige høre om en ved hvordan man checker om et objekt (resultSet) er tomt eller ej.

Hvis man nu antager at man henter information fra en tabel, fx et nummer.

"Select * from tabelnavn where nummer = '121212';
og det nummer ikke findes på tabellen. Så vil den ikke hente noget.

Så hvordan er det lige man checker at hvis den ikke finder noget, så har man skrevet forkert fx, eller noget i den stil.

Har min klasse, hvis folk vil tage et kig

http://pastebin.com/LBM5LQMg

Der fejler den, dvs den skriver hverken login succes eller login failed hvis der skrives forkert i begge felter.



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Kenneth, din version er der næsten, du har dog et = tegn for meget.. Man gør normalt følgende.


Fold kodeboks ind/udJava kode 




Nu har jeg aldrig rørt ved java men vil tror man kan gøre sådan her
Fold kodeboks ind/udJava kode 




Det virker lidt underligt at du vælger brugere med det rigtige login og/eller det rigtige password.

Du risikerer jo at vælge en forkert bruger som tilfældigvis har samme password - med mindre dit password felt er unikt, hvilket i de fleste tilfælde givet meget lidt mening.



Oki, jeg vil lige prøve jeres forslag her lidt senere :)

mht dit svar Jonatan, så er jeg kun i opstartsfasen :) du tænker måske hvor jeg bruger AND i min SQL command istedet for OR. Da jeg prøvede det sidst lavede den ged.

Det vil måske nok løses nu, hvis jeres objekt formel i beskriver oppe virker.

EDIT:

Det virker ikke. http://pastebin.com/ME5sFvmK

Har lavet en if / else mere hvor at hvis (x != null) så køre det hele, hvor hvis den er null så skulle den gerne udprinte en system.out.print.

Har en nummer man indtaster og et password, hvis ingen af disse er rigtige (findes i tabellen) så skriver den ikke noget, dvs selvom der ikke er noget er objektet stadig ik null?

En der kan svare på dette?



Indlæg senest redigeret d. 09.10.2013 10:24 af Bruger #17615
Jeg mangler lidt din klasse DataAccess.

Den virker dog lidt underlig - set udefra - eftersom den skulle pakke data adgang ind, men tager imod SQL.

Et par ting som du kunne overveje:

1) Isoler dataadgang til DataAccess ved at lade DataAccess tage imod user og pwd som variabler i et kald (en metode) og returnere objecter istedet for resultset's.
2) Brug prepared statements så din SQL er mere simpel og du kan have alle tegn i password (hvilket jeg går ud fra at du prøver med det der COLLATE utf8_bin
3) Gem ikke password i ren tekst men gem et digest af password - f.eks. MD5. Så er du en smule mindre sårbar mod at password's læses ud af databasen helt uden besvær.



Tror også liiiige du skal læse lidt op på SQL injection.



Hvordan er det lige man laver disse password i MD5 format. Vi har ikke haft det i vores fag "endnu". Ved ikke om det er et krav, men det lyder smart :)

Findes der en slags guide eller noget?



Der findes mange guides, men næsten ingen, som fortæller den RIGTIGE måde at gøre det på. Den her er (imho) den bedste: https://crackstation.net/hashing-security.htm

Og der er også Java kode.



Indlæg senest redigeret d. 10.10.2013 13:44 af Bruger #2695
t