webForumDet fria alternativet

Databas connections

ASP

12 svar · 292 visningar · startad av Patrik81

Medlem sedan okt. 2001538 inlägg
Frågan#1

Alltså, jag har försökt, ohjag har försökt igen, och så har jag försökt lite till, men jag har inte förstått det till 100% (uppenbarligen), så jag ser som enda möjliga utväg att komma hit där jag vet att sakerna funkar och det finns smarta personer som kan det jag inte kan.

Jag har ännu inte fullt ut greppat det här med Recordsets, och när man skall använda Set Connection etc,
men jag antar att man använder reordsets när man vill ha tillbaka ett värde från en databas, medan man bara använder Conn.Execute om man vill skicka ett värde till databasen, eller?

Jag skulle vara så himmelskt tacksam för två kod-syntax:er, en för när man kopplar upp mot en databas och hämtar hem värden, och stänger ned anslutningen, och en där man kopplar upp och bara skickar data till databasen för att sedan stänga anslutningen...
För jag kollrar jämt bort mig...

Och om någon sedan kan peka mig till en sida där jag kan läsa mer om Recordsets och alla hmm jag vet inte facktermen för det men jag har sett typ Recordset.Eof och sådana saker, och dessa utökningar (.Eof) et var man kan läsa om dem, så jag kan lära mig vilka som finns och hur man använder dem.
Typ .eof eller .close .GetRows etc...

Tack på förhand
- Patrik

Oops kanske skall nämna att jag jobbar med MySQL lokalt på min dator med PWS som serversimulator...

------------------
Minds are like parachutes;
they only work when they´re open

[Redigerat av Patrik81 den 24 nov 2001]

Medlem sedan dec. 200012 464 inlägg
#2

Alla metoder och länkar till annat som finns i ADO
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscadomethods.asp?frame=true&hidetoc=true

Set använder man när man skapar ett nytt objekt eller om du vill tilldela ett objekt ett nytt värde.

Det finns flera inlägg som handlar om hur man gör en uppkoppling mot Mysql, dels i detta forum och dels i Mysql-forumet så om du gör en sökning på med nyckelorden MYSQL ASP så hittar du flera exempel.

Hämta data

'skapa connectionobjekt
set connect = server.createobject("adodb.connection")
connect.open "dsn"

'skapa ett recordset
set rs = connect.execute("select * from t"
'gå igenom alla rader till eof (end of file)
while not rs.eof
'fälten i recordsetet får samma namn
'som kolumnerna i tabellen
'skriv ut en kolumn
response.write rs("kolumn1")
'hämta nästa post från databasen
rs.movenext
wend
'stäng recordsetet
rs.close
'ta bort objektet
set rs = nothing
'stäng connection
connect.close
set connect = nothing

uppdatera data, då behövs inget recordset, bara en connetion

set connect = server.createobject("adodb.connection")
connect.open "dsn"
connect.execute "update t set c1 = " & request.form("c1") & " where id = " & request.form("id")
connect.close
set connect = nothing

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 2001538 inlägg
#3

LarsG du är en ängel!
Nu skall vi se omjag inte kan sitta och pilla lite med detta hela natten lång och få till det.
Tack så jättemycket!

MVH Patrik

PS. Jaghar verkligen försökt läsa alla de andra diskussionerna här om asp och mysql men det finns en massa olika sätt att göra allt på med dsn-less connections och massa variationer, så jag kollrade bort mig på det. Men det här var super!
DS.

------------------
Minds are like parachutes;
they only work when they´re open

Medlem sedan okt. 2001538 inlägg
#4

Medan jag ändå håller på så kan jag ju passa på att fråga då...

Om man vill jämföra ett värde hämtat från en databas med ett värde man just fått från användaren så kan man väl göra såhär va?

If 
 strVardeFranAnvandaren <> rs("VardeFranDatabas") Then
  blablabla
 Else
  Blablabla
End If

istället för

response.write rs("kolumn1")

(från tidigare exempel)

eller?

och ja just det ja... det var ju det jag tänkte på..
om man vill hämta ett enda värde från en tabell typ ett namn, värdet från en enda cell i en rad i en tabell, (man vet exakt vilken tabell oh vilken rad och vilken cell) men behövs det verkligen en reordset till det?

Återigen tacksam för svar
MVH Patrik

------------------
Minds are like parachutes;
they only work when they´re open

Medlem sedan dec. 200012 464 inlägg
#5

Jo, det går att jämföra på det sättet. Om möjligt är det bäst att ställa villkoret i sql-frågan

Om du skall hämta något från en databas så måste du alltid använda ett recordset. Det är oavsett hur resultatet ser ut.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 24 nov 2001]

Medlem sedan okt. 20005 273 inlägg
#6

Om man vill jämföra ett värde hämtat från en databas med ett värde man just fått från användaren så kan man väl göra såhär va?

If
strVardeFranAnvandaren <> rs("VardeFranDatabas") Then
blablabla
Else
Blablabla
End If

ja

och ja just det ja... det var ju det jag tänkte på..
om man vill hämta ett enda värde från en tabell typ ett namn, värdet från en enda cell i en rad i en tabell, (man vet exakt vilken tabell oh vilken rad och vilken cell) men behövs det verkligen en reordset till det?

joo det behövs ett recordset för det...det kan ju se ut som så här

strSQL = "SELECT fältnamn from databas WHERE fältID = 1"
Set ObjRS = ObjConn.Execute(strSQL)
If ObjRS.EOF Then
'Ingen post fanns där
Else
skriv ut posten 
End If

------------------
Icaaq, mannen med korven. som hejar på Bajen(!)

Medlem sedan okt. 2001538 inlägg
#7

Sista frågan nu *lovar*
;)

Jaja. Jag har glömt fråga detta nu i de tidigare inläggen, jag har haft det i bakhuvudet mne hela tiden glömt just den frågan...

Jag köpte en bok om asp, har den tyvärr inte i närheten just nu, men den hette något i stil med "Learn ASP in 24 hours"
ja iallafall så har jag av den fått lära mig att man längst upp i koden bör ööö, återigen ingen fackterm... men man bör skriva typ:

Dim strStrang1, strStrang2 etc...

för att, jag vet inte, men boken gjorde så och det är den jag har till grund för min kunskap... så iallafall frågan då...
det här med att lägga till str framför Strang1 antar jag bara är för att förenkla för läsaren av bken, eller? För jag ser inte många str framför era strängar i era kodexempel här på forumet...

ojdå, kom på en jättesnabb fråga också angående kodsnutten jag fick av LarsG

response.write rs("kolumn1")

jag tycker den ser lite konstig ut... jag ifrågasätter inte ditt kunnande, men, (enligt min bok) bör man inte typ skriva

response.write(rs("kolumn1"))

eller funkar båda eller har jag fel?
*det är myket möjligt att jag har fel för jag brukar bara använda <%= strStrang1 %> inbäddad i html koden (även om detta sättet är slöare än att skriva ut all html kod med response.write) men jag undrar, och jag vet ju att svaren jag får härifrån håller hög kvalitet så bättre att fråga här än någon annanstans...

Tack så mycket för alla svaren, gissa om jag fört anteckningar oh sparat ned den här filen till datorn för att spara och kunna använda vid senare tillfällen.
Det har varit en synnerligen produktiv och lärorik dag idag

Tack alla som svarat
MVH Patrik

------------------
Minds are like parachutes;
they only work when they´re open

Medlem sedan dec. 200012 464 inlägg
#8

Att använda dim är bra speciellt om du använder

option explicit

överst i din kod. Då får du en kontroll på att alla variabler är med i en Dim-sats. På så sätt så kan man undvika slarvfel som beror på att man använder felaktiga variabelnamn. Det är också fördelaktigt ur prestandasynpunkt att använda dim.
Att prefixa variabelnamn är jag inte speciellt förtjust i, men det är ju upp till var och en.

Att skriva


response.write(rs("x"))

är egentligen inte riktigt. Om man anropar en sub eller en metod som inte returnerar något värde så skall man inte använda parenteser men ovanstående godkänns i alla fall av kompilatorn.

Däremot om du skriver

sub testing(a,b)
response.write a + b
end sub

testing (12,7)

så får du fel. I det här fallet så får man inte ange parenteser utan måste skriva


testing 12,7

Det är ju lite inkonsekvent, så det är alltså enklast att alltid utelämna parenteserna.

------------------
essentitia preter non sans multiplicandum

Medlem sedan okt. 2001538 inlägg
#9

Så har man lärt sig ytterligare något idag
;)
Tack så mycket
och ja jag använder mycket riktigt Option Explicit på andra kodraden
första för @LANGUAGE = VBScript...

Tack så mycket

MVH Patrik

------------------
Minds are like parachutes;
they only work when they´re open

Medlem sedan mars 20002 836 inlägg
#10

Att prefixa variabelnamn tycker jag är bra.
tex: strVariabel talar om att variabeln är av String typ och intVariabel talar om att den är av heltalstyp, objVaraibel att det är ett object. Sedan kan man om man vill om man håller på med object tala om vad för typ av object det är genom objConn, objRSUsers etc där objConn talar om att det är ett connection object och objRSUsers talar om att det är ett recordset object innehållande avnändarinfo m.m

Speciellt trevligt blir det när man kikar i någon annans kod att få en förståelse snabbt av vad som är vad, för vilket är värre än att kika på kod som någon annan utvecklat och så ser man till exempel ett connection object som heter BlaBla .... man förstår inte direkt vad det är för något =P

Att prefixa variablerna på detta sätt kallas ungersk notation.

Kika på detta inlägg: http://cgi.webforum.nu/wf/Forum11/HTML/002688.html

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

[Redigerat av PatrikB den 24 nov 2001]

Medlem sedan mars 20002 836 inlägg
#11
<%@LANGUAGE=VBScript%>

är bara onödigt att använda sig av då jag vill påstå att "alla" IIS Servrar har redan VBScript som default språk och då faller just @language

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

Medlem sedan okt. 2001538 inlägg
#12

Personligen tycker jag det är VÄLDIGT smidigt med Ungersk Notation (ytterligare en sak jag lärt mig idag, en fackterm den här gången ;)

det där med att man aldrig kan råka ut för att man använder reserverade ord i sql har jag aldrig tänkt på förut, men det är ju en stor fördel.
förstår inte varför det skulle vara förlegat, det blir ju enklare på det viset, ok att man använder tre tecken mer för varje gång man använder en sträng eller så, men det överlever jag allt.

MVH Patrik

------------------
Minds are like parachutes;
they only work when they´re open

Medlem sedan okt. 2001538 inlägg
#13

Jaja, den raden kanske är onödig, men jag har använt den så länge nu på alla sidor jag skrivit så jag skulle tycka det så konstigt ut om den inte fanns med....

*jag är väl bara en enfaldig konservativ dumjäkel, men jag tycker den ser så fin ut där den ligger ;) *

MVH Patrik

------------------
Minds are like parachutes;
they only work when they´re open

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)