Avatar billede riversen Nybegynder
04. december 2002 - 20:51 Der er 7 kommentarer og
1 løsning

SQL der ikke bliver udført i access database

Jeg har en sql sætning der ser således ud

DROP TABLE TestTabel

Hvis jeg kører sql'en direkte i access kører det fint. Hvis jeg kører sql'en fra mit java-program bliver tabellen ikke slettet. Kan det af en eller anden grund bare ikke gøres, eller hvad sker der?

At oprette en tabel er ikke noget problem.

/René
Avatar billede arne_v Ekspert
04. december 2002 - 20:52 #1
Det bør kunne gøres via JDBC ODBC.

Får du nogen SQLException ?
Avatar billede riversen Nybegynder
04. december 2002 - 20:58 #2
ja, det gør jeg egentlig

Databasemotoren kan ikke låse tabellen "TestTabel", fordi den allerede anvendes af en anden person eller proces.

men databasen er lukket og det eneste der kommunikerer med den er den sql

    dbh.open();
    dbh.executeUpdate( "CREATE TABLE TestTabel (testsøjle int)" );
    dbh.executeUpdate( "INSERT INTO TestTabel VALUES (" + insertValue + ")" );
    dbh.executeUpdate( "DROP TABLE TestTabel" );
    dbh.close();
Avatar billede riversen Nybegynder
04. december 2002 - 20:59 #3
øhm...lige et øjeblik
Avatar billede arne_v Ekspert
04. december 2002 - 21:00 #4
JDBC ODBC bridgen er ikek særlig god.

Prøv og:
  get connection
  create statement
  create table
  insert table
  close statement
  close connection
  get connection
  create statement
  drop table
  close statement
  close connection

Hvis det virker, så er der dømt møg-driver !
Avatar billede riversen Nybegynder
04. december 2002 - 21:00 #5
nevermind
Avatar billede riversen Nybegynder
04. december 2002 - 21:01 #6
min kode så faktisk sådan her ud

    dbh.open();
    dbh.executeUpdate( "CREATE TABLE TestTabel (testsøjle int)" );
    dbh.executeUpdate( "INSERT INTO TestTabel VALUES (" + insertValue + ")" );
    ResultSet rs = dbh.executeQuery( "SELECT * FROM TestTabel" );
    dbh.executeUpdate( "DROP TABLE TestTabel" );
    dbh.close();

hvis jeg lukker og åbner lige før den sidste executeupdate så kører det...åbenbart resultsettet der drillede
Avatar billede arne_v Ekspert
04. december 2002 - 21:03 #7
Ahhh !

Ja. executeQuery henter ikke alle data. Den åbner kun
queryen. Det er alle next()'erne som henter en record af
gangen. Derfor var tabellen jo i brug.
Avatar billede riversen Nybegynder
04. december 2002 - 21:23 #8
sidder og leger med unittest så jeg var ved at tro at JUnit udfører alle linier selvom en catch blok ikke blev udført :-)...men nu kan jeg se at hvor var jeg dum for 20 min siden
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