webForumDet fria alternativet

JDBC, min SQL-sats funkar inte

7 svar · 424 visningar · startad av ponli

ponliMedlem sedan sep. 200112 inlägg
#1

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
#2

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
#3

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
#4

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
#5

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
#6

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
#7

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
#8

Då fungerar det... Tack så mycket för hjälpen...

Mvh

/Pontus

Genererad på 383 ms · cache AV · v20260730165559-full.f96bc7eb