webForumDet fria alternativet

ASP och sql

9 svar · 301 visningar · startad av johannaloke

johannalokeMedlem sedan apr. 200393 inlägg
#1

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

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

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

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

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

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

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

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

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

Du kan avsluta den med & ";" eller inget.

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