Avatar billede josto Nybegynder
19. marts 2004 - 23:02 Der er 5 kommentarer og
1 løsning

JDBC og Access, kan bruge Insert og Create Table, men intet andet

Hej

Jeg har i flere dage forsøgt at få en forbindelse mellem et Java program og en MS Access db (v. 10 / 2002) som tilgås vha. JDBC til at virke – dog uden held som jeg ønsker.

Databasen er lavet i Access, jeg har kun oprettet:

Tabel navn: Test

Test indeholder to felter:
ID, som er PK, Int., og autonumber
Navn som er et tekst felt

Forbindelsen oprettes herunder (Udklip)

try
  {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

   
    con = DriverManager.getConnection("jdbc:odbc:TTSdatabase2", "", "");

    stmt = con.createStatement();
  }
  catch (Exception e)
  {
    System.err.println ("Fejl: " + e);
  }


Herefter kan jeg søge i tabellen og udtrække de to poster som jeg har oprettet i Access. Altså ingen problemer.

Når jeg ønsker at indsætte benytter jeg følgende kode:

try
  {
  String query = "insert into Test (ID, Navn) values ( 5, 'Test5')";
  System.out.println(query);
  stmt.execute(query);
  }
  catch (Exception e)
  {
    System.err.println ("Fejl: " + e);
  }
Der fremkommer ingen exception, men der bliver heller ikke indsat nogen records i databasen. Jeg kan heller ikke slette eller opdaterer vha. JDBC/ODBC.

For at fuldende mystikken har jeg forsøgt at oprette en ny tabel i Acces databsen vha. JDBC – det virkede???!!

Altså kan jeg søge i- og oprette tabeller, men ikke indsætte, opdaterer eller slette records i tabellen.

Nogen der har et bud på hvad jeg har overset i min kode – jeg har tabt overblikket…
Avatar billede arne_v Ekspert
19. marts 2004 - 23:06 #1
Prøv stmt.executeUpdate for INSERT.

Husker du at stsmt.close() og con.close() ?
Avatar billede josto Nybegynder
20. marts 2004 - 09:23 #2
Har nu prøvet at rette stmt.executeUpdate for INSERT - det virker... JUBIII

Hvor står der noget om hvad execute og executeUpdate kan bruges til (INSERT, UPDATE, SELECT og DELETE) - har nogen en god side (Jeg har selvsagt ikke opdaget forskellen før nu)?

Hvis du (arne_v)vil oprette et svar, så kan du få dine point.

josto
Avatar billede arne_v Ekspert
20. marts 2004 - 09:25 #3
svar
Avatar billede arne_v Ekspert
20. marts 2004 - 09:27 #4
Godt spørgsmål.

Man bruger executeQuery til SELECT og executeUpdate til INSERT/UPDATE/DELETE.

execute er noget man bruger til noget der kan returnere multiple
result sets f.eks. stored procedure kald.
Avatar billede arne_v Ekspert
20. marts 2004 - 09:28 #5
ResultSet     executeQuery(String sql)
          Executes the given SQL statement, which returns a single ResultSet object.


int     executeUpdate(String sql)
          Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.


boolean     execute(String sql)
          Executes the given SQL statement, which may return multiple results.
Avatar billede josto Nybegynder
20. marts 2004 - 10:28 #6
Takker for hjælpen og den meget hurtige respons.

Fortsat god weekend.

Josto
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