ponliMedlem sedan sep. 200112 inlägg
Hej!
Har en klass som använder sig av en databas för att få info. Nu vill jag skriva en funktion som tömmer en tabell på all data men jag får inte till det.
Har kontakt med databasen eftersom alla andra frågor fungerar bra med "samma" kod, det är bara delete som inte fungerar.
Så här ser själva kodsnutten ut:
--
stmt.executeUpdate("delete from tempbooking");
--
Den borde ju ta bort all data ur tabellen eller är det något som jag har missat?
Mvh
/Pontus
LarsGMedlem sedan dec. 200012 465 inlägg
Du kanske missar att ta hand om någon SQLException.
Du kanske har satt autocommit till false och gör aldrig någon commit.
Kan du köra sql-frågan, som samma användare, direkt i något verktyg ?
------------------
essentitia preter non sans multiplicandum
ponliMedlem sedan sep. 200112 inlägg
Jag får inget exception, det tar jag hand om.
Autocommit? Vad är det, hur ställer jag in det. Ska kanske tillägga att databasen är gjord i Acces och anropas genom ODBC.
Är det Access som inte uppför sig riktigt riktigt?
/Pontus
ponliMedlem sedan sep. 200112 inlägg
Har nu kollat med getAutoCommit vilken är satt till true.
Körde frågan i Access med SQL där den rensar tabellen efter en bekräftelse från mig. Är det den bekräftelsen som måste göras för att borttagningen ska göras? Är det det som auto-commit är till för?
/Pontus
LarsGMedlem sedan dec. 200012 465 inlägg
Autocmommit true innebär att varje statement committas automatiskt.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Connection con = DriverManager.getConnection(url);
Statement stmt = con.createStatement();
con.setAutoCommit(true);
String sql;
sql = "delete from booking";
int rows = stmt.executeUpdate(sql);
Red: Bekräftelsen har inget med autocommit att göra, det ligger i Accessklienten.
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 11 okt 2001]
ponliMedlem sedan sep. 200112 inlägg
Connection conn = DriverManager.getConnection("jdbc:odbc:TuffDB");
Statement stmt= conn.createStatement();
conn.setAutoCommit(true);
rows=stmt.executeUpdate("delete from tempbooking");
Det är koden(här strippad) för att köra min delete sats. Skriver jag ut rows returnerar den rätt antal rader men dom tas inte bort. Kör jag däremot frågan i Access med SQL fungerar det som sagt efter att jag svarar o.k på att X antal rader ska tas bort...
Jag förstår inte vad som kan vara fel. select-satser går alldeles utmärkt att köra...
/Pontus
LarsGMedlem sedan dec. 200012 465 inlägg
Om du lägger till
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Connection conn = DriverManager.getConnection("jdbc:odbc:TuffDB");
Statement stmt= conn.createStatement();
//conn.setAutoCommit(true);
rows=stmt.executeUpdate("delete from tempbooking");
conn.commit();
conn.close();
?
------------------
essentitia preter non sans multiplicandum
ponliMedlem sedan sep. 200112 inlägg
Då fungerar det... Tack så mycket för hjälpen...
Mvh
/Pontus