Avatar billede d0stuffz Nybegynder
06. januar 2005 - 16:04 Der er 13 kommentarer og
2 løsninger

Forvirringen er komplet ang Java, Access, SQL.

Jeg er forvirret. Jeg er ikke sikker på hvor min fejl er, måske er det en Java fejl, måske er det en Access fejl. Men jeg kan seriøst ikke se hvor Access fejler, så det må være en Java fejl.

1. gang rundt:
Database db = connect();

Resultset res = db.select(sqlsætning_herunder); 
RecordIterator ite = res.getIterator(this);

// ... iterere igennem resultsettet



OK - 1. gang rundt
[Database: ProblemLog] select( "SELECT Personnel.signature as Signature, Personnel.persName as Personnel, Personnel.active as Active  FROM Personnel WHERE Personnel.signature<>'-' ORDER BY Personnel.signature;" )

FAIL - 2. gang rundt
[Database: ProblemLog] select( "SELECT Personnel.signature as Signature, Personnel.persName as Personnel, Personnel.active as Active  FROM Personnel WHERE Personnel.signature<>'-' ORDER BY Personnel.signature;" )

[Database: ProblemLog] SQL Error in statement: SELECT Personnel.signature as Signature, Personnel.persName as Personnel, Personnel.active as Active  FROM Personnel WHERE Personnel.signature<>'-' ORDER BY Personnel.signature;
msg: General error


garbagecollecteren har været omkring og taget hvad den skal tage af ResultSet, Databaser, whatever. Tingene har været vist, GUI'en har opdateret, Kaldet har fuldført og returneret, tråden er i afvente på hvad brugeren finder på næste gang.
Avatar billede arne_v Ekspert
06. januar 2005 - 16:12 #1
Bruger du den JDBC ODBC bridge som kommer med Java ?

Det er et legetøjs produkt.

Og det kan sagtens være årsag til problemerne.

Men når vi ikke kender din kode så kunne der jo også være noget der.
Avatar billede d0stuffz Nybegynder
06. januar 2005 - 16:19 #2
Vidunderligt ...

    /*
    *  Load JDBC-ODBC Bridge
    */
    static {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch ( Exception e ) {
            System.out.println( "Could not load JDBC-ODBC Driver" );
        }
       
        // makes a lot of noise
        //    if ( DEBUG.ENABLED )
        //      DriverManager.setLogStream( System.out );
    }
Avatar billede arne_v Ekspert
06. januar 2005 - 18:05 #3
Det er ihvertfald den berygtede JDBC ODBC bridge
Avatar billede d0stuffz Nybegynder
07. januar 2005 - 09:59 #4
Nogen anbefalinger til alternativer?

Jeg har googlet lidt og fundet Sun's egen JBDC listing med en oversigt over ALLE de ODBC driver der findes. Iflg den findes der en løsning til J2EE 1.3.

Specifikationer:
MS Access
J2EE 1.4.2
Avatar billede d0stuffz Nybegynder
07. januar 2005 - 10:48 #5
Korrektion:
J2SE 1.4.2
Avatar billede arne_v Ekspert
07. januar 2005 - 12:37 #6
Bedste anbefaling er at skifte database.

:-)

Men det er jo ikke nødvendigvis en mulighed.

Jeg kender ikke nogen af de kommercielle JDBC ODBC løsninger.

Jeg synes at du skal starte med at prøve med en anden databas for at se om fejlen
forsvinder eller du får en bedre fejl meddelelse.

forsvinder => forstærker mistanken til SUN JDBC ODBC bridge

bedre fejl => du kan fixe hva der nu er galt og så prøve med Access igen

hvis du fortsætter med SUN JDBC ODBC skal du sikre dig at brugen er
single threaded
Avatar billede d0stuffz Nybegynder
07. januar 2005 - 12:58 #7
Databasen er designet og kører som sådan (VBA, Access GUI, etc). Jeg har bare "overtalt" min chef til at skifte til 3-layered system udvikling (OOP) da det er en bedre ide.

Jeg mindes intet om vi havde så mange problemer med Access på 1.semester, men ok det er ved at være et stk tid siden og vi var hvis en smule n00bish i kanterne :D.

Men det problem her er kun starten (toppen af isbjerget). Nogle gange virker det, nogle gange har den problemer med getClass();, nogle gange siger den at ResultSettet blev lukket midt i afviklingen.
Avatar billede d0stuffz Nybegynder
07. januar 2005 - 13:05 #8
Database db = connect(); <- Singleton

Database alternativ i den sidste løsning: Lotus SmartSuite Approach ..

Hvis Approach var den sidste database i verden og jeg var virklig trængende, så ville jeg gå ud i haven og finde nogle sten af male, sætte noter på, etc.
Avatar billede arne_v Ekspert
12. januar 2005 - 22:39 #9
singleton ? er alle metoder synchronized ?
Avatar billede d0stuffz Nybegynder
17. januar 2005 - 15:48 #10
Nej kun tilgangen til at "få" databasen.

Dvs hvis du er først - så er DB'en din, og du kan gøre hvad du vil (Select, Insert, Update, Whatnot)

Hvis ikke så må du prøve igen senere.

Jeg bruger min tidl lærers open source fra docjava
Avatar billede arne_v Ekspert
17. januar 2005 - 15:53 #11
D.v.s. at det er ikke bare en almindelig singleton, men en connection pool
med max. 1 instans ?
Avatar billede d0stuffz Nybegynder
17. januar 2005 - 15:59 #12
Ohh ja .. så fik jeg læst det hele..

Jeg havde en række bugs med den her.
- Jeg "glemte" at lukke resultsettet igen (res.close()),
- Min TableModel fik ikke de rigtige informationer / kunne ikke behandle dem
- Personnel constructoren understøttede ikke de rigtige attribs
- .. plus et par mere jeg har svedt ud.

Tro mig jeg havde en RIGTIG god uge den uge, mit hår er næsten vokset tilbage igen efter jeg rev det hele ud. :D

Dvs hvis du behandler den code rigtig så virker ODBC-JDBC faktisk. Jeg kører stadig med den, og når jeg ikke f**ker up så kan den faktisk klare det.
Avatar billede d0stuffz Nybegynder
17. januar 2005 - 16:01 #13
arne_v: ja det kan du godt sige.
Avatar billede d0stuffz Nybegynder
18. januar 2005 - 12:44 #14
Arne hvad siger du til vi deler i porten og får lukket spg?
Avatar billede arne_v Ekspert
18. januar 2005 - 12:45 #15
ok
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