Avatar billede hildesheim Nybegynder
08. oktober 2005 - 17:43 Der er 18 kommentarer

INSERT INTO Access-db. Giver ingen fejl, men gemmer ikke i db'en

Jeg prøver at sætte en række ind i en tabel i en Access-database. Jeg får ingen fejlmeddelelse, men den nye række bliver heller ikke indsat.

Jeg kan sagtens hente noget ud fra databasen.

Her er min kode (sig endelig til, hvis I har brug for at vide mere):

        try {       
           
            String SQL = "INSERT INTO employees "
                + "(name) "
                + "VALUES "
                + "('" + name + "')";
           
            PreparedStatement pstmt = conn.prepareStatement(SQL);
            pstmt.executeUpdate();
        }
        catch (SQLException e) { System.out.println("SQLException in addEmployee! "+e.getMessage()); }
        System.out.println("Personen er oprettet");

Mangler jeg evt. en update-dims, eller noget?

Her er lige min db-conn:

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            conn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=kl.mdb","", "");

Den skulle der ikke være noget i vejen med, for jeg kan jo som sagt godt hente noget ud fra db'en.
Avatar billede kalp Novice
08. oktober 2005 - 17:48 #1
du mangler nok commit
Avatar billede kalp Novice
08. oktober 2005 - 17:49 #2
Jeg ved mere om oracle skal det lige siges hehe.. men har du ikke en pstmt.commit;
? eller lignende. Ved så ikke om det er nødvendigt med access så det er bare et bud
Avatar billede arne_v Ekspert
08. oktober 2005 - 18:15 #3
default er autocommit
Avatar billede arne_v Ekspert
08. oktober 2005 - 18:17 #4
er det en console app således at du ville se den println SQLException ?
Avatar billede arne_v Ekspert
08. oktober 2005 - 18:17 #5
og du har ikke flere kl.mdb'er vel ?

(jeg ville nok sætte sti på fremfor bare at bruge den i current dir)
Avatar billede hildesheim Nybegynder
08. oktober 2005 - 18:30 #6
arne_v: Jeg er ikke helt sikker på, jeg ved hvad du mener, men jeg tror du mener, om jeg kører det i fx Eclipse, og det gør jeg. Hvis jeg fx ændrer navnet på databasen til et eller andet får jeg godt nok en fejlmeddelelse.

Kan det være noget med skriverettigheder i mappen, db'en ligger i? Den er selvfølgeligt ikke skrivebeskyttet.
Avatar billede arne_v Ekspert
08. oktober 2005 - 18:36 #7
kan du prøve at sætte sti på MDB filen ?
Avatar billede arne_v Ekspert
08. oktober 2005 - 18:47 #8
skriver

System.out.println("Personen er oprettet");

ud ?
Avatar billede hildesheim Nybegynder
08. oktober 2005 - 19:27 #9
Eclipse brokker sig når jeg prøver at sætte stien ind. Det er måske fordi der er mellemrum i den. Men jeg tror bare heller ikke det er dét - når jeg nu sagtens kan hente fra db'en og får fejl, hvis jeg prøver at skrive en db, der ikke findes.

Den skriver godt nok System.out...
Avatar billede hildesheim Nybegynder
08. oktober 2005 - 19:27 #10
Nå, den brokker sig pga. backslashen i stien
Avatar billede _carsten Nybegynder
08. oktober 2005 - 19:39 #11
Du skal have 2 backslashes \\

Nu er det vel ikke sådan at din DSN er sat til READONLY ???
Avatar billede arne_v Ekspert
08. oktober 2005 - 19:42 #12
jep \\

jeg er bekymret for at du har 2 MDB'er og at du indsætter i den ene og kigger i den anden
efter de indsatte data
Avatar billede hildesheim Nybegynder
08. oktober 2005 - 20:22 #13
_carsten: det er en DSN-less connection, jeg laver til databasen.

arne_v: der er altså kun den ene database
Avatar billede _carsten Nybegynder
08. oktober 2005 - 21:14 #14
Tjaa - det kan jeg se :)

Har du prøvet at køre det console (for at udelukke noget opsætningsmæssigt i eclipse) ?

Jeg ville dog angive fuld sti til *.mdb.
Avatar billede arne_v Ekspert
08. oktober 2005 - 21:17 #15
hvordan checker du om den er indsat ?
Avatar billede kalp Novice
08. oktober 2005 - 21:30 #16
Jeg ved godt, at det burde være executeUpdate i sådan en situation, men måske du alligevel kunne teste med

pstmt.executeQuery();

hvem ved.. måske er skal det slet ikke være så logisk:)
Avatar billede hildesheim Nybegynder
09. oktober 2005 - 04:24 #17
Nu har jeg fundet ud af noget: hvis jeg opretter to personer lige efter hinanden, bliver den første oprettet fint, men ikke den anden - så nu skulle det da være nogenlunde nemt at finde ud af, hvad fejlen er.

Jeg skriver lige igen når jeg har fundet ud af det - og så deler jeg lige nogle point ud til dem, der prøvede på at hjælpe. Tak for det! :)
Avatar billede _carsten Nybegynder
09. oktober 2005 - 09:13 #18
.....
..........
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.executeUpdate();
pstmt.close();  // Prøv lige at indsætte denne linie
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