johannalokeMedlem sedan apr. 200393 inlägg
Är det någon som kan förklara skillnaderna på vilket sätt man skriver sql-frågan i asp?!
Sitter med gammal kod som det ska letas buggar i och de skriver sql-frågorna på olika sätt på olika ställen.
Vad är tex skillnaden på:
fråga 1:
SQLStmt = "UPDATE tblStab "
SQLStmt = SQLStmt & "SET Fornamn = '" & Fornamn & "'
SQLStmt = SQLStmt & "WHERE ID = " & Id & ";"
OCH
fråga 2:
SQLDel = "Delete from tblStabParents WHERE ID = " & Id
OCH
fråga 3:
SQLStmt2 = "UPDATE tblStabParents "
SQLStmt2 = SQLStmt2 & " SET Parent='" & OverId &"'"
SQLStmt2 = SQLStmt2 & " WHERE Id = " & Id
I första frågan har man ; efter satsen. Varför?! Ska man det eller kvittar det?
I andra frågan har man inga dubbel-duttar (") sist efter frågan.
Varför har man ibland enkel-duttar ('), ibland dubbel-duttar ("), ibland &-tecken?
Är det någon som kan hjälpa mig att reda ut när var hur de används?
//Johanna
LarsGMedlem sedan dec. 200012 465 inlägg
; i slutet behövs inte, men det skadar inte heller. I SQL används ; som avgränsare mellan olika satser inte som en avslutning.
& används för att sammanfoga två strängar i Visual Basic
s = "a" & "b" ' s innehåller nu strängen ab
I sql används ' för att avgränsa strängar (i VB betyder ' kommentar.)
Fornamn = "Lars"
S = "SET Fornamn = '" & Fornamn & "'"
' S innehåller nu stängen SET Fornamn = 'Lars'
När man gör en jämförelse med en numerisk kolumn så anger man inte ' kring värdet
id = 4711
S = " where id = " & id
' S innehåller nu värdet where id = 4711
cyprysMedlem sedan dec. 20003 105 inlägg
Du får tänka stränguppbyggnad vad gäller &-tecken och "-tecken.
Det hela ska ju bli en sträng som satts ihop med diverse värden från variablar.
Vad gäller ;-tecknet så brukar man sätta ut det efter en SQL-sats fast det inte behövs.
Skriver du SQL genom ACCESS t.ex. är detta tecken nödvändigt.
Enkelduttarna sätter man kring värden där kolumnen inte är av numerisk sort.
varchar, date, MEMO osv sätter man enkelfnuttar kring.
INT, long, counter osv sätter man INTE enkelfnuttar kring
UlfTMedlem sedan maj 20016 050 inlägg
Talar man om Oracle, finns det ett litet kommandoradsprogram, SQL+, som man kan använda för att fråga databasen. Då måste man avsluta SQL-satser med ";". Men frågar man samma Oracle-bas från ett program, då är det inte nödvändigt med ";". Anledningen till att man avslutar med ";" i första fallet, är att man ska kunna strukturera sin SQL-sats med radbrytningar för att göra den lättläst, utan att den exekveras redan efter första radbrytningen. Men i programmering bygger man ju upp en hel sträng innan den exekveras, så då behövs inget ";".
Jag reserverar mig för att det kanske behövs ";" i andra databaser än Oracle.
johannalokeMedlem sedan apr. 200393 inlägg
Tackar för svaren! Nu kommer fler frågor ;-)
Kan man ha enkel-duttar (') fast det är numeriska värden eller blir det fel om man har det?
Vad är det för skilland på när man använder SET och VALUES då? Gäller samma regler med ' runt strängar och inte runt numeriska värden?
Och det här med ; när man använder access-databas. Vi använder en accessdatabas men det finns inga ; efter varje fråga. Funkar det utan också?
//Johanna
UlfTMedlem sedan maj 20016 050 inlägg
Enkelduttar ska enbart vara runt strängar.
SET använder du när du uppdaterar en redan existerande rad i tabellen.
VALUES när du gör en "insert", dvs skapar en ny rad.
johannalokeMedlem sedan apr. 200393 inlägg
Ännu fler frågor...
Vi har en sqlfråga:
INSERT INTO tbl VALUES (' " & ID & " ')
ID är ett tal. Blir denna frågan fel då? Eller kan jag skriva så?
Vad jag förstått ska ' användas runt strängar vid tex jämförelser (WHERE) och vid SET fornamn='"&namn&"' .
Är det så att jag måste ha det runt strängar men att det kvittar om jag har det runt numeriska värden?
I vår kod vi jobbar med så verkar de göra lite hur som...
//Johanna
cyprysMedlem sedan dec. 20003 105 inlägg
Yupp, den frågan blir fel
"INSERT INTO tbl (ID) VALUES(" & ID & ")"
Ett gäng exempel på "rätt" kod
SQL = "SELECT * FROM tbl WHERE siffervarde = " & variabel
SQL = "SELECT * FROM tbl WHERE textvarde = '" & variabel & "' "
SQL = "INSERT INTO tabell (siffervarde, textvarde, siffervarde, textvarde) VALUES(" & variabel & ", '" & variabel & "', 54, 'text')"
SQL = "UPDATE tbl SET texten = '" & variabel & "', siffran = " & variabel & ", siffran2 = 64, texten2 = 'Ett värde här' "
johannalokeMedlem sedan apr. 200393 inlägg
Jättebra med alla svar!!! Nu börjar det klarna!
Vi letar ju buggar i programmet vi jobbar med och det känns som att de felaktiga sql-frågorna mycket väl kan vara buggarna.
En fråga till bara (tror jag):
Cyprus den här frågan: SQL = "SELECT * FROM tbl WHERE siffervarde = " & variabel
skulle jag kunna avsluta den med &" eller blir det också fel?
Engine^Medlem sedan dec. 20002 861 inlägg
Du kan avsluta den med & ";" eller inget.