---
title: "Vilket är smartast?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/81748-vilket-är-smartast"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Havregryn"
published: "2003-07-10T12:04:49.000Z"
updated: "2003-07-11T13:32:09.000Z"
replies: 9
views: 385
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/81748-vilket-är-smartast"
---

# Vilket är smartast?

## #1 — Havregryn, 2003-07-10T12:04Z

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.

Permalänk: https://www.webforum.nu/p/81748

## #2 — @nders, 2003-07-10T12:08Z

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

Permalänk: https://www.webforum.nu/p/1107245

## #3 — ulfe, 2003-07-10T12:12Z

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

Permalänk: https://www.webforum.nu/p/1107248

## #4 — @nders, 2003-07-10T12:16Z

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

Permalänk: https://www.webforum.nu/p/1107251

## #5 — LeonL, 2003-07-10T12:17Z

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)

Permalänk: https://www.webforum.nu/p/1107252

## #6 — Engine^, 2003-07-10T12:37Z

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 ;)

Permalänk: https://www.webforum.nu/p/1107269

## #7 — spango, 2003-07-10T13:07Z

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

Permalänk: https://www.webforum.nu/p/1107283

## #8 — ekke_t, 2003-07-11T09:12Z

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?

Permalänk: https://www.webforum.nu/p/1107660

## #9 — Havregryn, 2003-07-11T11:49Z

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.

Permalänk: https://www.webforum.nu/p/1107737

## #10 — ulfe, 2003-07-11T13:32Z

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 =)

Permalänk: https://www.webforum.nu/p/1107816

---

Tråden på webben: https://www.webforum.nu/amne/asp/81748-vilket-är-smartast
