---
title: "Reda ut begreppen när det gäller att kppla till databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/91170-reda-ut-begreppen-när-det-gäller-att-kppla-till-databas"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "plelkes"
published: "2003-11-24T20:00:50.000Z"
updated: "2003-12-14T19:05:57.000Z"
replies: 14
views: 424
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/91170-reda-ut-begreppen-när-det-gäller-att-kppla-till-databas"
---

# Reda ut begreppen när det gäller att kppla till databas

## #1 — plelkes, 2003-11-24T20:00Z

Hej,
tyvär blir jag inte riktigt klok på alla olika sätt som finns...
Har hittat åtminstone 3:

1. ```
   Set Databas = Server.CreateObject( "Adodb.connection" )
   Databas.Provider = "Microsoft.Jet.OLEDB.4.0"
   MdbFilePath = Server.MapPath( "/****" )
   Databas.connectionString = "Data Source='" & MdbFilePath & "'"
   Databas.open
   ```
2. ```
   Set objConn = Server.CreateObject("ADODB.Connection")
   objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath( "/****" )
   strSQL = "....."
   Set objRS = objConn.Execute(strSQL)
   ‘
   ‘
   ‘
   objRS.Close
       Set objRS = Nothing
       objConn.Close
       Set objConn = Nothing
   ```
3. ```
   Set gbok = Server.CreateObject( "Adodb.Connection" )
   gbok.Provider = "Microsoft.Jet.OLEDB.4.0"
   MdbFilePath = Server.MapPath( "/****" )
   gbok.ConnectionString = "Data Source='" & MdbFilePath & "'"
   gbok.open
   
   strSQL = "……"
   
   gbok.Execute( strSQL )
   Set gbok = Nothing
   ```

 

Vilka fördelar har de olika? 
Och vilken rekomenderas och varför?

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

## #2 — Vide, 2003-11-24T20:39Z

Alla metoder du beskriver öppnar databasen på samma sätt (samma provider), men med olika metoder och parametrar. Vanligast är att använda 2:an, men dom andra går lika bra.

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

## #3 — Jesper T, 2003-11-24T21:55Z

Men är det inte en viss prestandaskillnad på "execute" och "open"?

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

## #4 — plelkes, 2003-11-25T06:52Z

> **Jesper T skrev:**
>
> Men är det inte en viss prestandaskillnad på "execute" och "open"?

 
Till vilkens fördel?

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

## #5 — Vide, 2003-11-25T08:03Z

> **Jesper T skrev:**
>
> Men är det inte en viss prestandaskillnad på "execute" och "open"?

I alla tre fallen används metoden open för att öppna databasen, alternativ två och tre använder sig sedan utav execute för att köra en fråga, det första alternativet kör ingen fråga alls.

Självklart kan du öppna ett recordset med dessa connectionobjekt som argument, men det görs inte här.

Mvh, Vide

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

## #6 — OveRRidE, 2003-11-25T08:24Z

Skillnaden med att öppna med Execute och Open är att ett RecordSet som är öppnat med Execute, alltid är ReadOnly. Ett RecordSet som öppnas med Open däremot, kan specifieras på ett annat sätt, med konstanter och andra parametrar som t.ex. disconnected recordsets, editeringsbara recordsets, mm. 

Min erfarenhet är att alltid använda Execute, vid hämtning av data och (med ett par undantag) likaså vid radering, editering och addering av data. 

Däremot när man vill ha tillgång till metoder såsom recordcount eller liknande, då använder jag Open, likaså i vid t.ex. paging-script, då jag är tvungen att ha ett RecordSet där jag kan hoppa fram och tillbaka.

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

## #7 — plelkes, 2003-11-25T09:19Z

> **OveRRidE skrev:**
>
> Däremot när man vill ha tillgång till metoder såsom recordcount eller liknande, då använder jag Open, likaså i vid t.ex. paging-script, då jag är tvungen att ha ett RecordSet där jag kan hoppa fram och tillbaka.

 
Hur skulle du då omformulera alt 2?

> Min erfarenhet är att alltid använda Execute, vid hämtning av data och (med ett par undantag) likaså vid radering, editering och addering av data

 Så vid uppdatering, insert och delete i databasen går bra att använda execute, men inte vid paging...

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

## #8 — OveRRidE, 2003-11-25T09:29Z

> **plelkes skrev:**
>
> > **OveRRidE skrev:**
> >
> > Däremot när man vill ha tillgång till metoder såsom recordcount eller liknande, då använder jag Open, likaså i vid t.ex. paging-script, då jag är tvungen att ha ett RecordSet där jag kan hoppa fram och tillbaka.
>
>  Hur skulle du då omformulera alt 2?

Det skulle jag inte, det ser bra ut som det är. Om du inte vill använda RecordCount. :)

> > Min erfarenhet är att alltid använda Execute, vid hämtning av data och (med ett par undantag) likaså vid radering, editering och addering av data
>
>  Så vid uppdatering, insert och delete i databasen går bra att använda execute, men inte vid paging...

Du *kan*  inte använda Execute vid paging.

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

## #9 — Palle, 2003-11-25T09:37Z

> **OveRRidE skrev:**
>
> Du *kan*  inte använda Execute vid paging.

Nu är kanske detta lite o.t. och o.k., men jo det kan man visst.. det beror på *hur* man bygger sitt paging-system. :)

ex. [Pagingsystem med GetRows](http://www.webforum.nu/showthread.php?s=&forumid=148&threadid=76181) använder *Execute()*\-modellen.

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

## #10 — OveRRidE, 2003-11-25T09:42Z

> **Palle skrev:**
>
> > **OveRRidE skrev:**
> >
> > Du *kan*  inte använda Execute vid paging.
>
> Nu är kanske detta lite o.t. och o.k., men jo det kan man visst.. det beror på *hur* man bygger sitt paging-system. :)
> 
> ex. [Pagingsystem med GetRows](http://www.webforum.nu/showthread.php?s=&forumid=148&threadid=76181) använder *Execute()*\-modellen.

Det är sant, Palle. Helt sant. 

Sen vet jag inte hur kul jag tycker att det är att ha paging i arrays, dock. :)

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

## #11 — Vide, 2003-11-25T10:46Z

Det blandas ihop att "öppna databas (conncetion)" och "öppna recordset". I frågan handlar det om att öppna databasen (connectionobjekt). Här kan du inte öppna på annat sätt än med open.

Om vi går ifrån ämnet till att öppna ett recordset på olika sätt så är det som OveRRidE säger. :)

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

## #12 — plelkes, 2003-11-25T13:41Z

Med risk att låta som den förvirrade nybörjare jag är:

> ...."öppna databas (conncetion)"

 

1. Det gör jag så snart som/ då jag *UPPDATE*,  *INSERT*,  *DELETE*
2. Ngra andra tillfällen?
3. Och då är "mitt" alt. #2 vanligast, men alla 3 år gångbara?

 

> "öppna recordset"

 

1. används ffa vid paging?
2. kan ngn av er på wf ge  ett ex på hur det kan se ut när både databasen öppnas och rs öppnas med?

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

## #13 — Palle, 2003-11-25T13:47Z

Ett exempel.. 

```
[red]<%

Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("databas.mdb")
		Set RecSet = Connect.Execute("SELECT fld1, fld2 FROM tbl1 WHERE fld1 = 'foo' AND fld2 = 'bar' ORDER BY fld1")

			If NOT RecSet.EOF Then
		
				'// Gör någe..

			End If
	
		RecSet.Close
		Set RecSet = Nothing
	Connect.Close
Set Connect = Nothing

%>[/red]
```

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

## #14 — plelkes, 2003-12-14T18:46Z

Ytterligare ngra frågo:

1. Kan man ha "connection" i en fil för sig? typ: minconn.asp
2. Finns det ngra nackdelar med denna lösning
3. vas skulle stå i detta fil?
4. hur skulle det se ut i min 3 exempel?

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

## #15 — LR^evil.sid, 2003-12-14T19:05Z

Jag tycker detta är smidigt

```
	SQL = "select * from table"
	Call SetCon(SQL, True)
	If IsArray(SetCon) Then
		'Do Something
	Else
		'No Records
	End If
```

Alterenativt denna om vi inte skall plocka ut något ur en databas

```
	SQL = "insert into table (field) values (value)"
	Call SetCon(SQL, False)
```

Funktioner

```
	Function SetCon(SQL, MkRecSet)
		Dim oCon
		Set oCon = Server.CreateObject("ADODB.Connection")
		oCon.Open(Application("ADODB"))
		If MkRecSet = True Then
			Dim oRs
			Set oRs = oCon.Execute(SQL)
			If Not oRs.EOF Then SetCon = oRs.GetRows(): CloseObject(oRs) Else SetCon = "no records..."
		Else
			oCon.Execute(SQL),,128
		End If
		CloseObject(oCon)
	End Function

	Function CloseObject(obj)
		obj.Close
		Set obj = Nothing
	End Function
```

global.asa

```
	Sub Application_OnStart
		Application.Lock
		Application("ADODB") = "driver={MySql ODBC 3.51 Driver};server=localhost;database=****;uid=****;pwd=****;option=16387;"
		Application.UnLock
	End Sub
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/91170-reda-ut-begreppen-när-det-gäller-att-kppla-till-databas
