Avatar billede aslan Nybegynder
12. juni 2002 - 14:40 Der er 10 kommentarer og
1 løsning

række tæller i interbase...

Burde denne her ikke virke?

    public int tæller()
    {
        int ialt=0;
        try
        {
            ResultSet row = db.select( "SELECT count(*) AS Amount FROM Gaest" );

            ialt = row.getInt("Amount");
        }
        catch( SQLException cs )
        {
            System.out.println( cs );
        }
        return ialt;
    }

java brokker sig ikke, men det gør interbase

Avatar billede aslan Nybegynder
12. juni 2002 - 14:42 #1
Jeg har hidtil brugt denne,men den er for resource krævende kan jeg se nu...

    public int tæller()
    {
        int ialt=0;
        try
        {
            ResultSet row = db.select( "SELECT * FROM Gaest" );

            while( row.next() )
            {
                ialt++;

            }
        }
        catch( SQLException cs )
        {
            System.out.println( cs );
        }
        return ialt;
    }
Avatar billede andersb Nybegynder
12. juni 2002 - 15:17 #2
Det er ikke altid, at DBMS'en (database management system) {eller måske er det database-driveren} får indsat det korrekte kolonnenavn, når man bruger AS i SELECT-sætningen.
Prøv at udtrække resultatet som ialt = row.getInt(1);
1 er kolonnenummeret (har nummereres 1,2 osv. i modsætning til arrayes osv, der nummereres 0,1 osv.=

PS Du har ret i, at din nye version af koden er mere effektiv end den gamle - lad altid DBMS'en udføre arbejdet, hvis det er muligt.

- Anders, lærer på datamatikeruddannelsen i Roskilde
Avatar billede jakoba Nybegynder
12. juni 2002 - 15:20 #3
Hvad siger brokken fra interbase? 
bær aliasnavnet evt skrives med bar små/bar stor bogstaver.
kunne det være at count(*) returnerer noget andet end en integer (long, string of digits)?
Avatar billede disky Nybegynder
12. juni 2002 - 16:41 #4
andersb:
At bruge numre i stedet for deres navne er en ret dum ide.

Jeg gør det samme som han går i den øverste version, fungerer perfekt med MySQL.

aslan:
Skift interbase ud med f.eks. MySQL, interbase er ikke kendt for at være særlig god specielt ikke fra Java.
Avatar billede aslan Nybegynder
12. juni 2002 - 22:32 #5
Nu har jeg prøvet på alle mulige måder men interbase brokker sig lige meget hvad...

Invalid operation to read at current cursor position... siger den
Avatar billede aslan Nybegynder
13. juni 2002 - 09:58 #6
Jeg prøver inde på interbase sektionen...
Avatar billede disky Nybegynder
13. juni 2002 - 10:31 #7
brug en 'rigtig' database istedet.
Avatar billede aslan Nybegynder
13. juni 2002 - 10:33 #8
haha... jeg ved ikke om du husker det man jeg tror snart du har fortalt mig det 4-5 gange nu...
Avatar billede aslan Nybegynder
13. juni 2002 - 10:33 #9
Og jeg er ikke blevet klogere.....
Avatar billede andersb Nybegynder
13. juni 2002 - 10:49 #10
disky:
Du har ret i, at det generelt er bedre at bruge kolonnenavn end kolonnenumre [navnene er mere forhåbentlig mere sigende og mere stabile over tid], men når nu navnene ikke virker i dette tilfælde, så må man jo bruge numrene.

aslan:
Check mit tidligere svar. Det løser dit problem!

Det vil være en overreaktion at skifte DBMS blot pga. dette lille problem.
Avatar billede aslan Nybegynder
13. juni 2002 - 10:57 #11
endelig virker det... andersb jeg er selv elev i RHS,det er meget sjovt at jeg skulle møde en derfra her...

public int tæller()
{
    int ialt=0;

    try    {

        ResultSet row = db.select( "SELECT count(*) FROM GAEST" );
        row.next();
        ialt = row.getInt(1);

        }
        catch( SQLException cs )
        {
            cs.printStackTrace();
        }
        return ialt;
}
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