webForumDet fria alternativet

kontrollera null

Java

9 svar · 474 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#1

Hej

Jag undrar hur man kontrollerar ett null värde i databasen.
Kolumnen i databasen jag vill kontrollera om den innehåller något är nummer.

har försökt med följande:

int pris=0;
				
Integer bud;
				
bud = rs.getInt("bud");				
if(!(bud == null))
{
	pris = rs.getInt("Bud");
}
else
{
	pris = rs.getInt("StartPris");
}

men detta fungerar inte. Den skriver bara ut 0.

Hur får jag detta att fungera??

Tacksam för all hjälp

Medlem sedan juni 20031 837 inlägg
#2

vad är rs för klass?

Medlem sedan feb. 20041 816 inlägg
#3

Kolla om wasNull() kan vara till nån hjälp:

bud = rs.getInt("bud");

if(!rs.wasNull()) {
	pris = rs.getInt("Bud"); //pris = bud
} else {
	pris = rs.getInt("StartPris");
}
Medlem sedan sep. 2005833 inlägg
#4

har provat wasNull, men fungerade inte.

jag lyckades istället med:

if(!(bud == 0))
{
pris = rs.getInt("Bud");
}
else
{
pris = rs.getInt("StartPris");
}

kanske inte den bästa lösningen, men funkar

Medlem sedan feb. 20041 816 inlägg
#5

Hmm det ska funka med wasNull()!

Är du säker att:

  • rs.getInt("bud") anropades precis innan wasNull() och att det inte var nån annan getter där emellan?
  • rs.wasNull() anropades och inte bud.wasNull()? Det är hemskt lätt att slinta med fingrarna. ;)
  • kolumnen verkligen är null och inget annat?

Du får iofs tillbaka en nolla hur som haver så det funkar ju som det är nu, för int's. Men rätt vad det är behöver man veta hur man fixar detta för en annan datatyp och det är då man är glad att man var så envis tidigare. Eller nåt.. :bire

Medlem sedan sep. 2005833 inlägg
#6

"rs.getInt("bud") anropades precis innan wasNull() "

Det kan nog vara felet, ska prova :P

Medlem sedan sep. 2001961 inlägg
#7

De olika SQL-typerna beter sig lite olika. T.ex. så returnerar getInt och de övriga get-satserna för primitiver alltid 0 om värdet är satt till NULL i databasen.

wasNull brukar bete sig lite konstigt just eftersom det returnerade värdet inte är null, utan 0...

Medlem sedan feb. 20041 816 inlägg
#8

Lime skrev:

wasNull brukar bete sig lite konstigt just eftersom det returnerade värdet inte är null, utan 0...

Är inte säker på vad du menar med den beter sig konstigt... Jag har inte märkt av några problem men så har jag inte använt JDBC så himla mycket heller.

Du har mer erfarenhet än vad jag har så jag skulle verkligen uppskatta om du kunde förklara vad du menade.

Medlem sedan sep. 2001961 inlägg
#9

dAEk skrev:

Är inte säker på vad du menar med den beter sig konstigt... Jag har inte märkt av några problem men så har jag inte använt JDBC så himla mycket heller.

Du har mer erfarenhet än vad jag har så jag skulle verkligen uppskatta om du kunde förklara vad du menade.

Jo, det handlar lite om hur JDBC-drivrutinen är implementerad. Har råkat ur för drivers som returnerar 0 från undre lagret om det är NULL i databasen (enligt spec) men som mellanlagrar resultatet. Om man då frågar wasNull så får man false tillbaka, även om det ÄR null i databasen eftersom värdet i JDBD-drivern inte är null utan 0. Oerhört frustrerande...

Medlem sedan feb. 20041 816 inlägg
#10

Okej, då vet jag. :bire Kan verkligen tänka mig att man blir galen när man sitter med en sådan version, usch.

252 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)