wsh + connection.execute + Cursor/ Locktypes

08/07/2009 - 21:08 von Josef Müller | Report spam
Hallo NG,

ich verwende in einem WSH folgende Befehle, um festzustellen, ob es den Satz
in der Tabelle gibt, um entweder ein Insert oder ein Update zu machen:

sql = "SELECT * FROM xTabelle where Key = 'X'"
set rs = cnn.Execute(sql)

if rs.eof = true Then
sql = "INSERT "
else
sql = "UPDATE ... "
End if
cnn.Execute sql

Obiges Konstrukt ist fast doppelt so schnell, wie im Vergleich dazu das
Folgende:

Set rs = CreateObject("ADODB.Recordset")

sql = "SELECT * FROM xTabelle where Key = 'X'"
rs.open sql, cnn, Cursortype, Locktype, Options

if rs.eof = true Then
rs.addnew
rs("Key") = "X"
rs("Feld2") = "Y"
rs("Feld3") = "Z"
else
rs("Feld2") = "Y"
rs("Feld3") = "Z"
End if
rs.update

Jetzt meine Frage:
gibt es eine Möglichkeit bei der ersten Variante den Default CursorType bzw.
LockType zu veràndern ?

Vielen Dank

lg
Josef
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
09/07/2009 - 01:29 | Warnen spam
Hallo Josef,

"Josef Müller" schrieb:

ich verwende in einem WSH folgende Befehle,



vorweg: Hier gehts um Microsoft SQL Server, nicht um Scripting, WSH, ...
Es wàre daher prima, wenn Du weitere Fragen zu diesem Thema in einer
passenden NG stellen könntest.

set rs = cnn.Execute(sql)

Jetzt meine Frage:
gibt es eine Möglichkeit bei der ersten Variante den Default CursorType bzw.
LockType zu verà¤ndern ?



Nein. Aber Du kannst problemlos das hier nehmen:



Dim SelectCommand
SelectCommand = "SELECT TOP 1 1 FROM xTabelle where Key = 'X'"
Dim InsertCommand
InsertCommand = "INSERT INTO ..."
Dim UpdateCommand
UpdateCommand = "UPDATE ... SET ..."

Dim Recordset
Set Recordset = CreateObject("ADODB.Recordset")
Recordset.CursorLocation = 3 'adUseClient (bei SQL Server)
Recordset.Open SelectCommand, <Connection>, 1, 1

If Recordset.EOF Then
<Connection>.Execute InsertCommand
Else
<Connection>.Execute UpdateCommand
End if

Recordset.Close()
Set Recordset = Nothing



Wichtig wàre auch, dass die Spalte "Key" einen passenden Index hat.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen