Avatar billede rbuus Nybegynder
08. december 2001 - 16:05 Der er 20 kommentarer og
1 løsning

Anvendelse af count

Hvordan får jeg dette resultat ud af resultSetog ind i en integer??

ResultSet rs=db.doQuery(\"select count(*) from kunder\")

Jeg vil gerne vide hvor mange rækker min database indeholder, da jeg skal checke på om jeg står i den sidste række i databasen.

Avatar billede greybeard Nybegynder
08. december 2001 - 16:11 #1
Hvorfor bruger du ikke:

rs.isLast()

for at checke om du er i sidste række istedet
Avatar billede erikjacobsen Ekspert
08. december 2001 - 16:13 #2
og bruger du den i dit spørgsmål skal du bare aflæse felt nummer 0 i første
række.
Avatar billede lundsfryd Nybegynder
08. december 2001 - 16:21 #3
Hvis du endelig _vil_ gøre det sådan, kan du bruge noget denne retning (løst sammenklasket kode, ingen garanti for, at det virker):

ResultSet rs=db.doQuery(\"select count(*) as antal from kunder\");
rs.next();
rs.getInt(\"antal\");

Avatar billede lundsfryd Nybegynder
08. december 2001 - 16:22 #4
Det skal selvfølgelig være

int antalKunder = rs.getInt(\"antal\");
Avatar billede rbuus Nybegynder
08. december 2001 - 16:38 #5
Det virker stadig ikke. Skal jeg ikke gøre følgende??

ResultSet rs=db.doQuery(\"select count(*) from kunder\");

try {
  int tæller = rs.getInt(\"Count(*)\");
  System.out.println(tæller);
}
catch...................
Avatar billede lundsfryd Nybegynder
08. december 2001 - 16:42 #6
Hvis du vil referere til dit resultat med getInt, er det nemmeste at lave et alias for din count(*) - som i mit eksempel ovenfor med \"count(*) as antal\". Altså:

ResultSet rs=db.doQuery(\"select count(*) as antal from kunder\");

try {
  int taeller = rs.getInt(\"antal\");
  System.out.println(taeller);
}
catch...................

Husk også rs.next()

Men den nemmeste løsning på dit problem er nu stadig helt klart greybeards forslag.
Avatar billede erikjacobsen Ekspert
08. december 2001 - 16:46 #7
og det jeg sagde var at uden omdøbning skriver man rs.getInt(0);
Avatar billede rbuus Nybegynder
08. december 2001 - 17:23 #8
Skulle dette virke??

ResultSet rs = db.doQuery(\"select count(*) from kunder\");

try {
  int tæller = rs.getInt(0);
  System.out.println(tæller);
}
catch..............
Avatar billede erikjacobsen Ekspert
08. december 2001 - 17:36 #9
du mangler rs.next() som lundsfryd også siger
Avatar billede rbuus Nybegynder
08. december 2001 - 18:36 #10
Det driller! Nu har jeg prøvet med både count og rs.isLast(). Kan ikke få det til at virke.

Ved brug af rs.isLast(), tror den altid at jeg er i den sidste række.

public boolean checkNæste() {
  boolean result = false;
try{   
  if (rs.isLast()) {
    System.out.println(i);
    result = true;
  }
  //else
    //result = false;
}catch (SQLException e) {
  System.out.println(\"Fejl\");
}
return result;
}

Jeg kalder denne metode anden steds fra således:
if(kdf.checkNæste())

Avatar billede rbuus Nybegynder
08. december 2001 - 18:37 #11
hov, jeg blev ikke færdig

den returnerer altid true.
Avatar billede rbuus Nybegynder
08. december 2001 - 18:39 #12
Måske jeg har misforstået nog, men dette virker heller ikke:

ResultSet rs = db.doQuery(\"select count(*) from kunder\");
   
    rs.next();
    int tæller = rs.getInt(0);
    System.out.println(tæller);
Avatar billede erikjacobsen Ekspert
08. december 2001 - 19:15 #13
Nå, ja ja, så tæller man fra 1 :) Dette er netop testet på en JSP-side:

ResultSet rs2 = stm.executeQuery(\"select count(navn) from navne\");
rs2.next();
int tæller = rs2.getInt(1);
out.println(tæller);
Avatar billede rbuus Nybegynder
08. december 2001 - 19:55 #14
Det virker ikke. Jeg får fejl ved rs.next(), når jeg kører programmet, og udkommenterer jeg dette får jeg fejl ved rs.getInt(1)

Jeg har importeret java.sql.*;
Avatar billede erikjacobsen Ekspert
08. december 2001 - 20:06 #15
Nå, lad os så se din kode - det hele - og se præcis hvad den siger.

Vi er ikke synske, så når du siger \"fejl\" kan det jo betyde hvad som helst
Avatar billede rbuus Nybegynder
08. december 2001 - 20:18 #16
public static void main(String[] args) {
    Database db = new Database();
   
    ResultSet rs = db.doQuery(\"select * from kunder\");
try {
    rs.next();
    int tæller = rs.getInt(1);
    System.out.println(tæller);
}
catch (SQLException e) {
    System.out.println(\"Fejl\");
}

    db.close();

}
Debugger kommer frem, så det er ikke en \"rigtig fejl\", men noget med uncaught exception, og Nullpointerexception.


Avatar billede erikjacobsen Ekspert
08. december 2001 - 20:31 #17
\"noget med\" - altså, det gider jeg ikke. Kan du ikke fortælle hvad
den siger der er galt kan jeg ikke hjælpe dig.
Avatar billede erikjacobsen Ekspert
08. december 2001 - 21:12 #18
Men ok, lidt synske er vi da alligevel.

Du har vist haft fingre i nogle klasser en eller anden tilfældig
person har vist os her på eksperten. Men du bruger dem ikke
korrekt. Og det er vist ikke noget du er blevet undervist i :)

doQuery() returnerer null hvis du ikke har oprettet en connection.
Og det ser det ikke ud til du har.
Avatar billede rbuus Nybegynder
08. december 2001 - 22:13 #19
Har fundet ud af problemet....
Avatar billede lundsfryd Nybegynder
08. december 2001 - 22:16 #20
Og det var?
Avatar billede rbuus Nybegynder
08. december 2001 - 23:38 #21
Først og fremmest glemt open()- en rigtig dummefejl.

Lave to metoder en som tæller antal rækker, og en som returnerer, om jeg står på den sidste række.
Kunne ikke bruge isLast(), da den af en eller anden underlig grund \"går en længere\" end jeg har i tabellen.
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



Seneste spørgsmål Seneste aktivitet
I går 23:37 Poe strøm Af lurup i LAN/WAN
I går 14:46 GIF-EDITOR Af snestrup2000 i Billedbehandling
I går 14:03 Logge ind Af Bob i PC
I går 12:12 2 skærme - 1 virker - den anden siger No signal Af eksmojo i Skærme
I går 10:33 openvpn projekt Af dcedata1977 i Windows