Avatar billede aslan Nybegynder
01. juli 2002 - 11:41 Der er 13 kommentarer og
1 løsning

Date problemos...

Er der en der kan overskue hvorfor jeg får samme datoer når jeg kører denne metode? Datoerne i mysql ser således ud :

DATOCHECKIND = 2002-05-30
DATOCHECKUD = 2002-07-01

void beregnAntalDage(int number)
{

    hentVærelse.opdaterRes(number,"DATOCHECKUD");

    java.util.Date datoStart = new java.util.Date();
    java.util.Date datoSlut = new java.util.Date();


    try{
          ResultSet row = hentRes.rækkeHent2(number,"RESERVATION","RESNR");

                while(row.next())
                {
                        datoStart = row.getDate("DATOCHECKIND");
                        datoSlut = row.getDate("DATOCHECKUD");

                }

        }
      catch(SQLException s)
      {
              System.out.println(s);

      }
      catch(NumberFormatException q)
      {

      }

        long resultat = (datoSlut.getTime() - datoStart.getTime())/1000/60/60/24;

        System.out.println(resultat);

}
Avatar billede aslan Nybegynder
01. juli 2002 - 11:42 #1
resultat bliver så selvfølgelig = 0
Avatar billede kasseper Nybegynder
01. juli 2002 - 11:48 #2
Er du sikker på at row.next blir kaldt ?
Hvad hvis du laver denne istedet :
    java.util.Date datoStart = null;
    java.util.Date datoSlut = null;

Hvis ikke row.next blir kaldt er det klart at du for 0....
Avatar billede aslan Nybegynder
01. juli 2002 - 11:54 #3
Nå jeg udskriver datoStart og datoSlut så får jeg datoen på nu....
Avatar billede kasseper Nybegynder
01. juli 2002 - 11:57 #4
Præcis, du har jo instansieret(uha svært ord) dem med : new java.util.Date();, netop derfor tror jeg ikke at de bliver overskrevet i din while løkke, ergo der bliver ikke hentet noget ud i dit resultSet...!
Avatar billede disky Nybegynder
01. juli 2002 - 12:08 #5
aslan:

Der er ingen grund til at instantierer dine date objekter, sæt dem til null istedet og ret

        long resultat = (datoSlut.getTime() - datoStart.getTime())/1000/60/60/24;

        System.out.println(resultat);

til


if(datoSlut!=null && datoStart!=null)
{
        long resultat = (datoSlut.getTime() - datoStart.getTime())/1000/60/60/24;
        System.out.println(resultat);
}

er du sikker på du overhovedet får noget fra databasen retur ?
Hvis du altid kun modtager et resultset fra basen, byt while() ud med if()

p.s. Et lidt mere smart error system ville være godt.
Avatar billede aslan Nybegynder
01. juli 2002 - 12:10 #6
Jamen så ville jeg få en sql Exception og det gør jeg ikke,desuden har jeg brugt tilsvarende metode med while(row.next()) mange steder i mit system uden problemer?
Avatar billede kasseper Nybegynder
01. juli 2002 - 12:10 #7
disky >> tyv :)
Avatar billede kasseper Nybegynder
01. juli 2002 - 12:11 #8
du kan sagtens bruge while, men du skal bare sikre dig at du håndtere et tomt resultset.
Avatar billede aslan Nybegynder
01. juli 2002 - 12:11 #9
Disky hvordan :

Et lidt mere smart error system ville være godt.?
Avatar billede aslan Nybegynder
01. juli 2002 - 12:23 #10
Der havde jeg godt nok kvajet mig med nogle attributter.... virker nu, men hvordan kan jeg lave et smartere error system?
Avatar billede kasseper Nybegynder
01. juli 2002 - 12:28 #11
Det er vist en længere smører...!
Avatar billede disky Nybegynder
01. juli 2002 - 16:13 #12
aslan:
Det jeg mener er at mit eksempel skriver ikke noget ud hvis en af datoerne er null, du skal nok udskrive noget i form af en else.

Mit er bare et simpelt eksempel, lidt error håndtering (at en er null) skal du selv lave.


kasseper:
Hvorfor bruge en while hvis der kun er 1 ?
Hvorfor er jeg en tyv ?
Avatar billede aslan Nybegynder
01. juli 2002 - 20:11 #13
disky nu jeg har fat på dig... Lige i øjeblikket programere jeg mine hjemmesider i php, men vil også gerne lære det i jsp. Og da jeg ved at du er stor fortaler af jsp og arbejder med det , kunne du vise mig nogle gode sites hvor jeg kan lære om det? Og ville det være smart af mig at gå over til jsp?
Avatar billede kasseper Nybegynder
01. juli 2002 - 20:19 #14
disky >> aslan siger at han bruger while mange andre steder, og det er der ikke noget galt i, det var der pointen var.
Du er en tyv fordi du lagde et svar, med stort set det som jeg havde skrevet tidligere. Du fik også point'sne, hmpfr.[surmule]..
Jeg skrev :

------------------------------------------------
Er du sikker på at row.next blir kaldt ?
Hvad hvis du laver denne istedet :
    java.util.Date datoStart = null;
    java.util.Date datoSlut = null;

Hvis ikke row.next blir kaldt er det klart at du for 0....
------------------------------------------------

du skrev :
------------------------------------------------
Der er ingen grund til at instantierer dine date objekter, sæt dem til null istedet og ret
------------------------------------------------

Han burde så smide sin

long resultat = (datoSlut.getTime() - datoStart.getTime())/1000/60/60/24;
System.out.println(resultat);

og catch sin evt. nullpointer.
Nok om det over og ud.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester