---
title: "SQL & ADODB.Command fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/130893-sql-adodb-command-fråga"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "pg"
published: "2005-07-02T14:16:51.000Z"
updated: "2005-07-04T07:34:32.000Z"
replies: 6
views: 373
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/databaser-sql/130893-sql-adodb-command-fråga"
---

# SQL & ADODB.Command fråga

## #1 — pg, 2005-07-02T14:16Z

Hej jag har en fråga om ADODB.Command. 
När jag uppdaterar en post i databasen (MySQL) på nedanstående sätt, finns det möjlighet att få information i retur om uppdateringen lyckades. T.ex genom att erhålla antalet påverkade poster, eller kan man ändra sql-satsen på något sätt kanske. 

Jag vill alltså kolla om posten existerar samt uppdatera denna utan att behöva skriva och köra två separata SQL-satser. 

Dim SQL
SQL = " UPDATE tblData SET "
SQL = SQL & " nIQ = 23 "
SQL = SQL & " WHERE ID = ? "
SQL = SQL & " AND sName = ? "
SQL = SQL & " LIMIT 1 "
        
Dim Com
Set Com = Server.CreateObject("ADODB.Command")
Com.ActiveConnection = Con
Com.CommandTimeout = 40
Com.CommandType = 1
Com.CommandText = SQL
Com.Prepared = True
        
Com.Parameters.Append Com.CreateParameter("ID", 3, 1, 11, 39)
Com.Parameters.Append Com.CreateParameter("sName", 200, 1, 10, "Peter")

Com.Execute
Set Com = Nothing

Tackar på förhand för alla svar. /PG

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

## #2 — LarsG, 2005-07-02T16:31Z

```
com.execute ,rows,128
```

Varför har du limit 1 med?

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

## #3 — pg, 2005-07-02T18:01Z

Tack för svaret, men det blev inte riktigt som jag tänkt mig.
Rows är väl "indata"-parameter till Com.Execute. Det jag är ute efter är ett returvärde från Com.Execute som talar om hur många poster som uppdaterats. 

Angående LIMIT 1.
Visserligen är ID ett unikt fält vilket gör att resultatet blir detsamma utan LIMIT 1. Men jag har fått för mig att LIMIT 1 gör att sql-satsen körs snabbare. Om man t.ex har 1000000 poster, så utan LIMIT 1 letar MySQL igenom alla poster. I alla fall borde det vara så om man vänder på villkoren och jämför sName som inte är unikt först.
SQL = SQL & " WHERE sName = ? "
SQL = SQL & " AND ID = ? "
Men jag har kanske fel.
I alla fall så tycker jag det är en bra regel att ha med LIMIT 1 i fall man någon gång skulle råka skriva en felaktig SQL-sats som annars skulle rensar en hel tabell. 

I mitt fall med Com.Execute ... så är det därmed värdet 0 eller 1 jag skulle vilja ha som svar.

/PG

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

## #4 — LarsG, 2005-07-02T18:35Z

Rows (andra parametern till execute) är en utparameter som anger antalet påverkade poster. 

Om ID är unikt så är limit helt onödigt.

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

## #5 — pg, 2005-07-03T16:49Z

Tack igen. Men vad gör jag för fel?

När jag kör detta exempet med Com.Execute , rows, 128 så får jag ingen uppdateringen av posten. Om jag byter till Com.Execute så uppdateras den. 

Dim SQL, rows
	SQL = " UPDATE " & sSessionName & "\_AdminData SET "
    SQL = SQL & " sUseCookieLogin = 'N' "
    SQL = SQL & " , sUseIPLogin = 'N' "
    SQL = SQL & " WHERE AdminDataID = ? "
    SQL = SQL & " AND sDisableCode = ? "    
    
    Dim Com
    Set Com = Server.CreateObject("ADODB.Command")
    Com.ActiveConnection = Con
    Com.CommandTimeout = 40
    Com.CommandType = 1
    Com.CommandText = SQL
    Com.Prepared = True
    
    Com.Parameters.Append Com.CreateParameter("AdminDataID", 3, 1, 11, accountID)
    Com.Parameters.Append Com.CreateParameter("sDisableCode", 129, 1, 10, codeID)
    
    Com.Execute , rows, 128
    Response.Write "rows = " & rows
    
    Set Com = Nothing

/PG

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

## #6 — Engine^, 2005-07-04T07:14Z

Det har skett en liten förväxling här mellan Connection.Execute() och Command.Execute()

```
Com.Execute rows, , 128
```

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

## #7 — pg, 2005-07-04T07:34Z

Groovy. Nu funkar det. Tackar!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/130893-sql-adodb-command-fråga
