Avatar billede thufir Nybegynder
28. september 2002 - 16:20 Der er 28 kommentarer og
1 løsning

Sletning af alt data i en database

Hejsa!! jeg har et lille problem.....
Hvordsn sletter man (via SQL sætninger) alt data i en database?? har lavet flgnd.:
strSQL = "Delete * from nyheder" <-- Men det virker ikke??? Hvad gør jeg galt
Avatar billede fangel Nybegynder
28. september 2002 - 16:31 #1
den hedder bare "DELETE FROM nyhedder"...
Avatar billede thufir Nybegynder
28. september 2002 - 16:32 #2
Jah.... det virker ikke! Har jeg prøvet :P
Avatar billede thomas_regin Nybegynder
28. september 2002 - 16:32 #3
Hejsa!

Du kan ikke bruge * i en DELETE-statement! Du kan evt. sige:

strSQL = "DELETE FROM nyheder WHERE ID > '0'"

Det skulle virke!

Med venlig hilsen,

Thomas Regin.
Avatar billede thomas_regin Nybegynder
28. september 2002 - 16:34 #4
Hvor ID naturligvis er din Primær-nøgle/Identity felt. ;)

Thomas.
Avatar billede thufir Nybegynder
28. september 2002 - 16:36 #5
virker ikke... desværre...

Skal der ikke en Loop While Not rs.EOF ????
Avatar billede thufir Nybegynder
28. september 2002 - 16:37 #6
eller noget i den stil :P
jeg er rimlig newbie....
Avatar billede rbl Praktikant
28. september 2002 - 16:38 #7
Hvis du vil slette alt i tabellen "Nyheder", så ER det:

"delete from Nyheder"

Men du snakker om at slette alt i en database. Det er jo noget lidt andet
Avatar billede thufir Nybegynder
28. september 2002 - 16:39 #8
Jeg skal have slettet alle Columns og Rows inde i databasen!
Det er et nyhedsscript hvor jeg skal slette alt...
Avatar billede thomas_regin Nybegynder
28. september 2002 - 16:40 #9
Thufir!

Lad mig se noget kode! Der skal ikke være et loop for at slette alt, men der skal naturligvis være en funktion, der eksekverer SQL-sætningen!

F.eks:

strSQL = "DELETE FROM NYHEDER WHERE ID > '0'"
myConn.execute(strSQL)

Hvis dette ikke virker, så har din database muligvis et problem. Der kan godt opstå nogle problemer ved sletning af meget store databaser på den måde, hvis der skal slettes flere hundrede tusinde records..

Med venlig hilsen,

Thomas Regin.
Avatar billede thufir Nybegynder
28. september 2002 - 16:43 #10
min kode ser sådan her ud:

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../../database/nyheder.mdb")
Conn.Open DSN

strSQL = "DELETE FROM nyheder WHERE ID > '0'"

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

MVH
Søren Juhl Nielsen (ThuFiR)
Avatar billede thomas_regin Nybegynder
28. september 2002 - 16:46 #11
Thufir!

Du mangler at eksekvere!

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../../database/nyheder.mdb")
Conn.Open DSN

strSQL = "DELETE FROM nyheder WHERE ID > '0'"
Conn.execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

Thomas.
Avatar billede thufir Nybegynder
28. september 2002 - 16:48 #12
Virker ikke.... Får en fejl....
Avatar billede rbl Praktikant
28. september 2002 - 16:48 #13
Nu er jeg mere vant til MySQL, men der skal da ikke ' omkring nullet:

strSQL = "DELETE FROM nyheder WHERE ID > 0"

Har du overhovedet et ID-felt ?
Avatar billede thufir Nybegynder
28. september 2002 - 16:49 #14
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket.
/admin/start.asp, line 79
Avatar billede thomas_regin Nybegynder
28. september 2002 - 16:49 #15
Thufir,

Okay.. Så gør som rbl siger, og fjern nullet helt, således at der står:

strSQL = "DELETE FROM nyheder"
Conn.execute(strSQL)

Det er jo ikke sikkert, at du har et ID-felt! ;)

Thomas.
Avatar billede thufir Nybegynder
28. september 2002 - 16:49 #16
Ja jeg har...... Og det er Primær nøgle!
Avatar billede thufir Nybegynder
28. september 2002 - 16:51 #17
SÅ!! nu sker der noget!...
Avatar billede thufir Nybegynder
28. september 2002 - 16:52 #18
Well hvad skal man så gøre for at den skriver at der ingen nyheder er....... hehe... er det ikke bare ELSE?
Avatar billede thufir Nybegynder
28. september 2002 - 16:53 #19
Hvis jeg kører den fil der viser indholdet.. Så kommer der en fejl om at databasen er tom... Hvordan får jeg den til at skrive at den er tom?
Avatar billede thomas_regin Nybegynder
28. september 2002 - 16:54 #20
Thufir,

Hvis du skal ha' den til at skrive, at der ingen nyheder er, må du først vælge noget fra databasen:

<%
'Find ud af om der er nyheder eller ej.
strSQL = "SELECT * FROM Nyheder"
set rs = Conn.execute(strSQL)

if rs.EOF then
Response.WRite "Der er ingen nyheder.. Øv!"
Else
Response.WRite "Her er nyhederne<br>"
do while not rs.EOF
Response.WRite rs("Nyhed")
rs.Movenext
Loop
End If
%>
Avatar billede thufir Nybegynder
28. september 2002 - 16:56 #21
okay!!! hmm jeg ved ikke hvem der skal have poinsne.. :( er har begge to hjulpet.... Jeg synz bare det er thomas der har hjulpet mest...
Avatar billede thufir Nybegynder
28. september 2002 - 16:58 #22
<%
' SQL Forespørgsel
strSQL = "Select * from nyheder order by id DESC"

'Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

if rs.EOF then
Response.WRite "<a>Der er ingen nyheder.. Øv!</a>"

Do

Response.Write "<div style=""width:500"">"
Response.Write "<hr width=""500""><a>Nyhed nummer: " & rs("ID") & "</a><br>"
Response.Write "<br><b><h2> " & rs("navn") & "</h2><b><br>"
Response.Write "<a> " & rs("nyhed") & "</a><br><br>"
Response.Write "<b><a><i>Oprettet af " & rs("opretter") & "</a><br><hr width=""500"">"
Response.Write "</div>"

rs.MoveNext

Loop While Not rs.EOF


%>

Det virker ik!
Avatar billede thomas_regin Nybegynder
28. september 2002 - 16:59 #23
Thufir,

Du mangler et END IF i bunden!

/Thomas.
Avatar billede thomas_regin Nybegynder
28. september 2002 - 17:00 #24
Og du mangler også ELSE!..

Prøv dette istedet:

<%
' SQL Forespørgsel
strSQL = "Select * from nyheder order by id DESC"

'Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

if rs.EOF then
Response.WRite "<a>Der er ingen nyheder.. Øv!</a>"

Else

Do while not rs.EOF

Response.Write "<div style=""width:500"">"
Response.Write "<hr width=""500""><a>Nyhed nummer: " & rs("ID") & "</a><br>"
Response.Write "<br><b><h2> " & rs("navn") & "</h2><b><br>"
Response.Write "<a> " & rs("nyhed") & "</a><br><br>"
Response.Write "<b><a><i>Oprettet af " & rs("opretter") & "</a><br><hr width=""500"">"
Response.Write "</div>"

rs.MoveNext

Loop

End If


%>
Avatar billede thufir Nybegynder
28. september 2002 - 17:03 #25
Nååh... hehe
Avatar billede thomas_regin Nybegynder
28. september 2002 - 17:06 #26
Kører det?
Avatar billede thufir Nybegynder
28. september 2002 - 17:06 #27
Jepper!
Avatar billede thomas_regin Nybegynder
28. september 2002 - 17:14 #28
Herligt!! :)

Tak for pointene!

Thomas.
Avatar billede thufir Nybegynder
28. september 2002 - 17:18 #29
Bare iorden!
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