[java] aantal records uit een recordset

Pagina: 1
Acties:

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Hoe haal ik in java het aantal records uit een recordset, zonder eerst een while te schrijven die alle records afloopt of kan dit niet?

edit:

in de ResultSetMetaData kan je alleen maar info vinden over de kollommen en niet over de rijen.

[ Voor 31% gewijzigd door Liqued op 06-01-2003 18:39 . Reden: Extra info ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:40
Je kunt een SELECT COUNT(*) doen voor je je daadwerkelijke gegevens ophaalt (dan heb je wel 2 queries nodig natuurlijk).

Heeft dat recordset object niet zoiets als een 'RecordCount' property oid?

https://fgheysels.github.io/


  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
whoami: Eerste "oplossing" kan niet.. ik krijg gewoon een recordset aangeleverd.. ik kan dus zelf geen queries uitvoeren. De 2de oplossing ben ik naar opzoek, maar ik kan het tot op heden niet vinden.

edit:

Hier kan je vinden wat je met een recordset allemaal kan doen. Of ik ben scheel of er lijkt geen methode voor te zijn.

[ Voor 37% gewijzigd door Liqued op 06-01-2003 18:50 . Reden: API toegevoegd ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:40
Liqued schreef op 06 January 2003 @ 18:45:
whoami: Eerste "oplossing" kan niet.. ik krijg gewoon een recordset aangeleverd.. ik kan dus zelf geen queries uitvoeren. De 2de oplossing ben ik naar opzoek, maar ik kan het tot op heden niet vinden.


Ik geloof dat die RecordCount properties etc toch ook zelf eerst even door de RS moeten wandelen vooraleer ze kunnen weergeven hoeveel records die recordset bevat. (Tenzij het DBMS (zoals SQL Server) in staat is om weer te laten geven hoeveel rows ze gereturned heeft).

https://fgheysels.github.io/


  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Ik heb het nu zo opgelost. Vind het niet mooi, maar goed.. mocht iemand het mooier weten, laat het me ff horen.

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 int[] krijgGeslachtenID(){
    int aantalrijen = 0;
    try {
      int i = 0;
      ResultSet geslachtenIDs = DataModule.geslachtenids();
      while(geslachtenIDs.next()){
        aantalrijen++;
      }
    } catch ( SQLException sqlex ) {
      System.out.println("Coordinator: resultset fout SQLException:" + sqlex);
    }
    int[] Antwoord = new int[aantalrijen];
    try{
      int i = 0;
      ResultSet geslachtenIDs = DataModule.geslachtenids();
      while(geslachtenIDs.next()){
        Antwoord[i] = geslachtenIDs.getInt(1);
        i++;
      }

    } catch ( SQLException sqlex ) {
      System.out.println("Coordinator: resultset fout SQLException:" + sqlex);
    }
    return Antwoord;
  }

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:40
Ik kan dan wel geen Java, maar volgens mij kan het (waarschijnlijk mooier):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int i = 0;
int aantalrijen = 0;
try
{
  ResultSet geslachtenIds = DataModule.geslachtenids();
  geslachtenIds.First();
  while ( geslachtenIds.Next() )
  {
      aantalrijen ++;
  }
  int[] Antwoord = new int[aantalrijen];
  geslachtendIds.First();
  while( geslachtenIds.Next() )
  {
     Antwoord[i] = geslachtendIds.getInt(1);
     i++;
  }
}
catch( ... )
{
  ...
}

Bij deze code ga ik er dan wel vanuit dat die 'ResultSet' een MoveFirst oid ondersteunt. (In .NET zou dit niet mogelijk zijn met een datareader, aangezien die datareader Forward only is).

Daarnaast kan je ook een Vector oid gebruiken ipv een gewone array. Aan een Vector kan je items gaan toevoegen zonder dat je de grootte specifieert. Die Vector gaat vanzelf 'groeien'.

https://fgheysels.github.io/


  • -Klimaks-
  • Registratie: Maart 2001
  • Laatst online: 26-08 15:40
Waarom maak je geen klasse voor de rijen uit de recordset. Die kan je dan allemaal afzonderlijk in een Vector stoppen.

Als je een klasse Blaat hebt.

Java:
1
2
3
 while (resultSet.next()) {
          result.add(new Blaat(resultSet.getInt(1), resultSet.getString(2)));
        }


Aantal rijen kan je dan gemakkeljik opvragen met:
Java:
1
result.size();


Door de gegevens kan je wandelen met:
Java:
1
2
3
4
for (int i=0; i< result.size(); i++ )
      { Blaat blaat= (Blaat)(result.elementAt(i));
          //doe iets met blaat
       }

In those days spirits were brave, the stakes were high, men were REAL men, women were REAL women, and small furry creatures from Alpha Centauri were REAL small furry creatures from Alpha Centauri.
Zaphod in The Hitchhikers Guide To The Galaxy


  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07

Linc

mzzl

Liqued schreef op 06 januari 2003 @ 18:54:
Ik heb het nu zo opgelost. Vind het niet mooi, maar goed.. mocht iemand het mooier weten, laat het me ff horen.

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 int[] krijgGeslachtenID(){
    int aantalrijen = 0;
    try {
      int i = 0;
      ResultSet geslachtenIDs = DataModule.geslachtenids();
      while(geslachtenIDs.next()){
        aantalrijen++;
      }
    } catch ( SQLException sqlex ) {
      System.out.println("Coordinator: resultset fout SQLException:" + sqlex);
    }
    int[] Antwoord = new int[aantalrijen];
    try{
      int i = 0;
      ResultSet geslachtenIDs = DataModule.geslachtenids();
      while(geslachtenIDs.next()){
        Antwoord[i] = geslachtenIDs.getInt(1);
        i++;
      }

    } catch ( SQLException sqlex ) {
      System.out.println("Coordinator: resultset fout SQLException:" + sqlex);
    }
    return Antwoord;
  }
wij moesten ook een keer (een hele tijd geleden de 2e keer dat ik java prog schreef :D) voor school een database programma maken en toen kon ik ook niks vinden GRRRR en toen ik deze niet mooie oplossingen gekozen :|

ps die leraren wisten ook niks, maar dat zegt niks :+

http://www.slobmotorsport.nl - iRacing Profiel

Pagina: 1