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