Avatar billede madiedk Nybegynder
26. august 2008 - 15:57 Der er 7 kommentarer og
1 løsning

Markørtilstanden er ugyldig hvis jeg bruger DISTINCT

hej

jeg koder i java og henter fra en ms access database.
mit problem er at hvis jeg bruger Distinct i min sql sætning, så kommer fejlen:
"Markørtilstanden er ugyldig" i consolen
selvom GUI delen stadig er åben og jeg kan se i en listbox at alle værdiernen er læst ind.
hvis jeg fjerne distinct så kommer fejlen ik.

her er koden

    public void indlæsAlleAfdelingerTilListbox()  {
        try {

            Database.alleAfdelinger();
            int i = 0;
            while (Database.alleAfdelinger.next()) {

                alleAfdelinger.addElement(Database.alleAfdelinger.getLong(1));
                i = i + 1;
                System.out.println(i);
            }
        } catch (SQLException ex) {
            Logger.getLogger(View.class.getName()).log(Level.SEVERE, null, ex);
        }
 
       
    }
Avatar billede arne_v Ekspert
26. august 2008 - 16:05 #1
JDBC ODBC bridgen er noget skrammel.

Jeg kan se 2 ting du kan forsoege:

* proeve med forskellige typer result set

* proeve med forskellige ODBC options i connection URL
Avatar billede madiedk Nybegynder
26. august 2008 - 17:11 #2
okay, tak

kan du måske lige give mig et lille hint til de 2 foreslag, hvad jeg eventuelt kan ændre og hvilke andre typer resultsets der er?
er ikke helt vildt skarp til det endnu:-)
Avatar billede arne_v Ekspert
27. august 2008 - 04:07 #3
Jeg har meget svært ved at være konkret, fordi jeg kan ikke genskabe problemet hos mig.

Men problemet eksisterer. Google finder masser af andre med problemet "cursor state invalid"
når man bruger distinct.

Det første du skal checke er at dit statement bruger ResultSet.TYPE_FORWARD_ONLY
og ResultSet.CONCUR_READ_ONLY !

(det ar argumenter to createStatement)

Derefter kunne det være interessant at vide hvor mange rækker du henter.
Avatar billede arne_v Ekspert
27. august 2008 - 04:09 #4
Og så en ting som undrer mig !!!!

Hvilken data type er første kolonne i query output ?

Du bruger getLong som henter en 64 bit integer.

Men de versioner af Access som jeg kender har slet ikke en sådan data type (en long i
Access i kun 32 bit).

Hvis kolonnen i Access er en long, så bør du nok bruge getInt !
Avatar billede madiedk Nybegynder
27. august 2008 - 19:38 #5
okay, tak, ville også google, men kunne ikke den engelske fejlmeddelse for det. men det virkede da jeg skrev ResultSet.TYPE_FORWARD_ONLY
så smid et svar arne_v så er der point.
mange tak for hjælpen
Avatar billede arne_v Ekspert
27. august 2008 - 20:04 #6
svar
Avatar billede arne_v Ekspert
27. august 2008 - 20:10 #7
Hvis du har mulighed for det saa skifte fra Access til en anden database.

Java 1.6 kommer f.eks. med en database (kaldet Java DB men der i virkeligheden Apache Derby).
Avatar billede madiedk Nybegynder
27. august 2008 - 22:25 #8
okay, jeg skal have den skiftet til oracle når det er færdigt, men tak for info og hjælp
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