[Java] Date lezen uit Access DB

Pagina: 1
Acties:

  • gill
  • Registratie: Januari 2002
  • Laatst online: 26-12-2025

gill

Love my lindsey...

Topicstarter
Het probleem:
Ik moet in Access een table hebben, waarvan 2 kolommen data's zijn: bv dag in jaar of uur van de dag.

Nu moet ik waardes gaan toevoegen in Java. Ik heb het volgende reeds geprobeerd:
Java:
1
Personeel p = new Personeel(1, "gill", "cleeren", "*****24", "3300", "****", new java.util.Date(1979, 16, 1), "m", "J");

Dan voegt hij het in Access wel toe als datum, maar deze constructor is deprecated...
Dan vond ik dat het via de DateFormat.parse moest, maar daar kom ik even niet uit:
code:
1
2
3
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);

java.util.Date date = df.parse("2/29/2000");

Als ik dit nu run, dan weigert Access deze toe te voegen... Nochtans is het bestemde veld als Date-veld gedefinieerd, maar ik weet niet als welk type van datumveld(general...) het moet?

En tweede probleem:
Bij het gebruiken van de deprecated constructor, als ik dan het veld wil lezen, als Date object dus, dan werkt dat ook niet, terwijl het dan wel als Date werd toegevoegd :?
Zelfs met een resultset.getObject(7) en deze dan casten naar Date, blijft hij weigeren...

Kan iemand mij helpen?

Visit my new Blog!
www.Snowball.be


Verwijderd

Ik weet niet in welk format Access je datum wil hebben, maar je kunt met de onderstaande code een datum en/of tijd aanmaken in de vorm zoals jij dat wilt.

import java.text.SimpleDateFormat; //importeer deze wel in je source

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String theDate = sdf.format(date);

Deze "theDate" stringbevat nu je datum als: dag-maand-jaar (dd-MM-yyyy). Je kunt in de API wel opzoeken welke codes waar voor staan. Ik bedoel "d" staat voor dag, "M" voor maand etc. Dat "-" van de datum kun je ook veranderen in een dubbele punt, of wat jij wilt, zo kun je dus de juiste vorm wel vinden voor je access denk ik.

Succes ermee :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Persoonlijk heb ik slechte ervaringen met datums in databases in combinatie met Java en daarom gebruik ik heel eigenwijs een encoding in een int (wat een database normaal gesproken ook zo zou doen waarschijnlijk ;) ). Deze encoding is ook geschikt voor sortering, wat hem wat leuker maakt dan een String oplossing. Het is geloof ik zelfs een bepaalde standaard om een datum zo te encoden, maar ik weet niet meer welke.

(de decoder is een beetje inefficient: Ik had toen duidelijk geen zin om het snel te doen ;) )
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  public static Calendar decodeToDateCalendar(int value) {
    if(value < 0) {
      return null;
    }
    _
    String stringRepr = String.valueOf(value);
    _
    int year  = Integer.parseInt(stringRepr.substring(0,4));
    int month = Integer.parseInt(stringRepr.substring(4,6));
    int day   = Integer.parseInt(stringRepr.substring(6,8));
    _
    return new GregorianCalendar(year, month - 1, day);
  }
    _
  public static int encodeToDateInt(Calendar value) {
    if(value == null) {
      return -1;
    }
    else {
      return
           value.get(Calendar.YEAR)      * 10000 +
          (value.get(Calendar.MONTH) + 1)   * 100 +
           value.get(Calendar.DAY_OF_MONTH)  * 1;
    }
  }

[ Voor 0% gewijzigd door mbravenboer op 24-09-2002 08:26 . Reden: newlines vallen altijd weg als ik code post, even de underscore weghalen als je de code over wilt nemen ]

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment