webForumDet fria alternativet

JDBC, min SQL-sats funkar inte

Java

7 svar · 424 visningar · startad av ponli

Medlem sedan sep. 200112 inlägg
Frågan#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

Medlem sedan dec. 200012 464 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

Medlem 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

Medlem 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

Medlem sedan dec. 200012 464 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]

Medlem 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

Medlem sedan dec. 200012 464 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

Medlem sedan sep. 200112 inlägg
#8

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

Mvh

/Pontus

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)