webForumDet fria alternativet

Vilket är smartast?

ASP

9 svar · 372 visningar · startad av Havregryn

Medlem sedan juni 200288 inlägg
Frågan#1

Hej!
Jag ser att många här inne på webForum använder sig utav följande kod när de öppnar databaser:

Set objConn = Server.CreateObject("ADODB.Connection") 
strConn = "driver=MySQL;server=localhost;uid=xxx;pwd=xxx;database=xxx"
objConn.Open(strConn)

Jag undrar varför då man likväl kan skriva följande:

Set objConn = Server.CreateObject("ADODB.Connection") 
objConn = "driver=MySQL;server=localhost;uid=xxx;pwd=xxx;database=xxx"

Är det gamla "traditioner" eller varför håller många fast vid det översta? Tacksam för svar.

Medlem sedan juni 200032 967 inlägg
#2

Re: Vilket är smartast?

Havregryn skrev:

Jag undrar varför då man likväl kan skriva följande:

Set objConn = Server.CreateObject("ADODB.Connection") 
objConn = "driver=MySQL;server=localhost;uid=xxx;pwd=xxx;database=xxx"

Det kan man inte. Däremot kan man lika gärna skriva så här:

Set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open "driver=MySQL;server=localhost;uid=xxx;pwd=xxx;database=xxx"

Jag använder denna metod, eftersom det oftast är onödigt att definiera en strängvariabel "i onödan". Jag är lite lat.

Dock lägger jag alltid in SQL-frågor i variabler som jag sedan skickar med till execute, istället för att där göra på motsvarande sätt, helt enkelt ur felsökningssynvinkel.

Mvh

Medlem sedan mars 200348 inlägg
#3

Kan ju vara att man tidigare har tilldelat strConn i en global variabel, men skriver ut det för förtydligandets skull...

Tex lägger detta överst på en sida eller i nån generell includefil

strConn = "driver=MySQL;server=localhost;uid=xxx;pwd=xxx;database=xxx"

Sedan använder jag bara koden:

Set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open(strConn)

Detta för att jag inte skall behöva hårdkoda på alla ställen där jag skall agera mot db

Ditt exempel går alldeles utmärkt att göra, men... den dagen du kanske flyttar din app så att du inte har den (db'n) liggande på localhost, så kommer du att få ett elände att få igång appen igen om du skall ändra alla hårdkodade värden

Medlem sedan juni 200032 967 inlägg
#4

Vill man göra det enkelt för sig om man har många olika sidor med samma databasanslutning, så lägg connectionstring i en applikationsvariabel i global.asa (Application_Onstart). Flyttbart och lättändrat.

Om det är en enda gång jag skapar kopplingen, så gör jag som i mitt ovan inlägg.

Mvh

Medlem sedan dec. 20025 871 inlägg
#5

ulfe: Det finns ju en ersättningsfunktion i wordpad som man kan använda... Finns även i de flesta programmeringsprogrammen... bara leta efter en sträng och be den ersätta det med en annan sträng... automatiskt.. sist jag använde den ersatte den 121 strängar ut mig :p (TAB till två mellanslag)

Medlem sedan dec. 20003 887 inlägg
#6

Det kan dock vara riskfyllt att använda replace på det sättet om man inte håller tungan rätt i mun.

För övrigt så är det snyggare att ha en global variabel som håller rätt på connectionsträngen ;)

Medlem sedan juni 20008 205 inlägg
#7

Engine^ skrev:

För övrigt så är det snyggare att ha en global variabel som håller rätt på connectionsträngen ;)

"Konstant" heter det :p

Medlem sedan juli 2001203 inlägg
#8

Rätta mig om jag har fel, men man kan väl skriva så här också...

strConn="driver=MySQL;server=localhost;uid=xxx;pwd=xxx;database=xxx"
set objRS = server.createObject("adodb.recordset")
strSQL = "SELECT * FROM ..."
objRS.Open strSQL, strConn

Kanske var det han menade i första inlägget.

Men denna kod är väl inte lika effektiv som att skapa ett Connection-objekt?

Medlem sedan juni 200288 inlägg
#9

Hmm

Set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open "driver=MySQL;server=localhost;uid=xxx;pwd=xxx;database=xxx"

Givetvis menade jag denna kod, glömde dock .Open när jag skulle posta.

Av alla tidigare inlägg om Execute VS Open så verkar det som att Execute är mycket smidigare. Dock skall man väl förmodligen använda Open när man vill ha paging eftersom det tydligen finns viss användbara funktioner att hämta där.

En annan sak som jag kom att tänka på är om man skall ha databas-öppningen i en separat fil, och sedan inkludera den med en include-fil?
Detta borde vara smidigt, men samtidigt långsammar antar jag.. hur mycket långsammare?

OBS. Detta inlägg skall vara under "Vilket är smartast", hamnade fel.

Medlem sedan mars 200348 inlägg
#10

LeonL
Självklart finns det programvaror för att ersätta text i flera filer, men undrar vad som är enklast...
Ersätta på ett ställe eller leta igenom massa text...
Vad händer om du "råkat" peta in ett mellanslag för mycket i strängen? Jo det bombar =)

686 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
548 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)