webForumDet fria alternativet

kontrollera null

9 svar · 473 visningar · startad av Vinnaren

VinnarenMedlem sedan sep. 2005858 inlägg
#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

The_HulkMedlem sedan juni 20031 937 inlägg
#2

vad är rs för klass?

dAEkMedlem sedan feb. 20041 777 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");
}
VinnarenMedlem sedan sep. 2005858 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

dAEkMedlem sedan feb. 20041 777 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

VinnarenMedlem sedan sep. 2005858 inlägg
#6

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

Det kan nog vara felet, ska prova :P

LimeMedlem sedan sep. 2001837 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...

dAEkMedlem sedan feb. 20041 777 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.

LimeMedlem sedan sep. 2001837 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...

dAEkMedlem sedan feb. 20041 777 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.

Genererad på 387 ms · cache AV · v20260730165559-full.f96bc7eb