---
title: "ADO vs. INSERT/UPDATE"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/12983-ado-vs-insert-update"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Erik Juhlin"
published: "2001-12-03T21:07:00.000Z"
updated: "2001-12-03T22:38:00.000Z"
replies: 24
views: 353
page: 1
pages: 2
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/12983-ado-vs-insert-update"
---

# ADO vs. INSERT/UPDATE

_Sida 1 av 2._

## #1 — Erik Juhlin, 2001-12-03T21:07Z

Mycket snack om att man ska använda INSERT/UPDATE, därför tänkte jag dra upp det så man kan diskuttera det.

**Fördelar med ADO:**
Jag brukar använda samma funktion för att lägga till post och redigera post. Istället för att då ha en If sats och två SQLer så är det smidigare att göra ungefär så här:

```
sql = "SELECT * FROM tblFoo WHERE iFooId = " & lFooId
Set rs = GetRecordset(sql)

If rs.EOF Then rs.AddNew
'Lägga in lite prylar
SaveRecordset rs
```

Då skickar man in id:t på posten som man vill redigera och vill man lägga in en ny så skickar man in -1.

Sen så är det enklare att loopa in saker. Exempel:

```
For Each f In rs.Fields
	If dic.Exists(f.Name) Then
		rs(f.Name) = dic(f.Name)
	End If
Next 'f
```

Så enkelt loopar jag in saker när jag lägger in det. Det hade varit lite krångligare att loopa ut en INSERT/UPDATE sträng.

Sen en annan bra sak är att man slipper problem med '.

**Fördelar med INSERT/UPDATE:**
Prestanda! (kan nog finnas fler och då får ni fylla på mer här :))

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

## #2 — Erik Juhlin, 2001-12-03T21:09Z

Jag tycker i alla fall att det är lämpligt att använda ADO på de ställena där man inte lägger till saker i databasen hela tiden. Som t.ex. räknare. Där bör man använda INSERT...

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

## #3 — jorgen, 2001-12-03T21:37Z

ADO funkar inte riktigt tillförlitligt i chilliASP, därför kör jag enbart ren SQL.

mvh Jörgen :)

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

## #4 — Vide, 2001-12-03T21:52Z

SQL är ett språk, ADO är en sammling objekt, så det blir svårt att jämföra... ;)

Med "ren" SQL har du full kontroll på vad du håller på med, du vet datatyper, du konvertera och listan är lång på vad du kan göra. Genom att använda ett RecordSet (ett av de objekten i ADO) för att lägga till data drar ned fint på prestandan (om man nu bryr sig), genom att du först frågar efter data och sedan lägger till, istället för att bara lägga till. Oavsätt hur du gör så måste du lära dig SQL, men använder du dig av SQL dagligen så kommer du snart förstå varför det är kraftfullare att använda ett språk istället för att begränsa sig till en sammling metoder till ett objekt.

Men visst, till vissa funktioner måste man använda RecordSet och i andra fall måste man använda SQL. Men får jag valet att välja så blir det utan tvekan SQL.

> Jag brukar använda samma funktion för att lägga till post och redigera post.

Brukar du leta efter kryphål i lagen också. ;)

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

## #5 — Erik Juhlin, 2001-12-03T21:55Z

> Brukar du leta efter kryphål i lagen också. ;)

Vad menar Vide?

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

## #6 — jorgen, 2001-12-03T21:57Z

Hej,

nu menade jag **AddNew** **Update** modellen att sätta in och uppdatera poster.

Finns det något namn på detta system?

mvh Jörgen :)

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

## #7 — Vide, 2001-12-03T22:01Z

> Vad menar Vide?

Jag menar att går att göra så, men det är inte rätt. §e

Visst det är lättsammt att koda så, men ur prestandasynpunkt så är det vansinne att hämta post(er) bara för att lägga till en. Jag hade gladeligen lagt till en if-sats för att få det rätt, men så är det ju bara jag... ;)

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

## #8 — Erik Juhlin, 2001-12-03T22:03Z

Jag hämtar ju inga poster när jag lägger till en ny post. Eftersom att ingen iFooId är -1 så får jag ingen post...

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

## #9 — Bender, 2001-12-03T22:07Z

Måste den inte söka igenom databasen ändå?

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

## #10 — Vide, 2001-12-03T22:09Z

Nja, jag var lite otydlig, det är väl inte själva hämtningen som är prestandasnattaren, utan själva sökningen.

Missförstå mig rätt här, jag tycker att RecordSet (som är skapat av objektet och inte av Connection) är ett mycket bra objekt som jag absolut inte skulle klarat mig utan i mitt jobb, men att använda det för att lägga till/uppdatera data gör jag bara då jag måste, vilket inte är ofta. :)

\[R.\]Bender han visst först ;)

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

## #11 — LarsG, 2001-12-03T22:11Z

```
connect.execute "update ogrish set aleb = 12 where bleb = 13",rows,128
if rows=0 then
connect.execute "insert into ogrish values(12,13)",,128
end if
```

Då hämtas aldrig någon post till klienten.

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

## #12 — jorgen, 2001-12-03T22:16Z

Så ja, nu var det slutlekt, då LarsG kom med den optimala lösningen och slog huvudet på spiken :e

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

## #13 — Erik Juhlin, 2001-12-03T22:16Z

Men det är ju så smidigt! :)

Skulle jag använda INSERT så hade jag så fort jag velat ha ett nytt fält man ska lägga in saker i så hade jag blivit tvungen att gå in i COM-objektet och skriva i SQLen och kompilera, ladda upp och installera o.s.v.

Med ADO lägger jag bara in ett inputfält i formuläret med samma namn som databasfältet. :)

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

## #14 — PatrikB, 2001-12-03T22:17Z

> Måste den inte söka igenom databasen ändå?

Jo, den söker igenom alla poster i tabellen och kolla efter en match på i detta fall -1 och eftersom det inte finns något sådan värde i den kolumnen så returneras sedan ett tomt recordset, vilket tar en hel del prestanda när det börjar vankas upp emot ett antal tusen poster.

Nä, ren SQL e bättre, fast, ibland kommer man inte undan och de gångerna är väldigt, väldigt få.

cya,
PatrikB

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

## #15 — Erik Juhlin, 2001-12-03T22:20Z

Men LarsG. I det fallet får man skriva två stycken SQL-strängar.
Och såna SQL-strängar kan vara jäkligt jobbiga att jobba med...

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

## #16 — PatrikB, 2001-12-03T22:22Z

nja, att hårdkoda ett sql-uttryck i ett com-object skulle jag nog inte göra.
Skulle antingen "passa" in sql-frågan som ska användas eller specifiera vilken SP som skulle användas.
SP ändrar man ju enkelt i SQL-Servern.

cya,
PatrikB

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

## #17 — Erik Juhlin, 2001-12-03T22:23Z

Jag har inget emot SQL, men säger bara att ADO har sina fördelar.

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

## #18 — LarsG, 2001-12-03T22:23Z

Om jag nu någon gång skulle skriva en ASP-applikation så skulle jag använda stored procedures, så slipper man hela hanteringen med att bygga frågor dynamiskt.

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

## #19 — Erik Juhlin, 2001-12-03T22:24Z

PatrikB: Vad menar du med passa in?

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

## #20 — Erik Juhlin, 2001-12-03T22:26Z

Kan man i Stored Procedures loopa igenom något som skickas in?
Som t.ex. ett Dictionary? :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/12983-ado-vs-insert-update  
Nästa sida: https://www.webforum.nu/amne/asp/12983-ado-vs-insert-update/page2.md
