Stefan Falz: (VBScrpit)

Beitrag lesen

Hallo Stefan

* sollte man ein Timeout fuer den DB-Zugriff einbauen

Du hast in ASP standardmäßig ein Timeout für die komplette Scriptverarbeitung:
Server.ScriptTimeOut = 30 bedeutet, daß Scripte innerhalb von 30 Sekunden abgeschlossen sein müssen. Ansonsten gibt der Server eine entsprechende Fehlermeldung aus.

* ist eine Verbindung zur DB offen, muss man diese
expliziet schliessen, oder werden offene Verbindungen automatisch geschlossen?

ASP schließt Verbindungen automatisch. Allerdings sollte man das nicht immer voraussetzten, da ASP die Objekte, die für die Connection benutzt werden, nicht immer zerstört.
Also am besten folgende Vorgehensweise immer einhalten:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open DSN, User, PWD
    ...
    objConn.Close
Set objConn = Nothing
%>

Besonders mit MDAC 2.x kann es einem sonst passieren, daß auf einmal 50 oder mehr Verbindungen gleichzeitig geöffnet werden (!!! von einem Client)

* was passiert wenn mehrere gleichzeitig in die DB schreiben wollen, funktioniert das nur beim ersten und bei den anderen gibt's 'ne Fehlermeldung?

Eine gute DB sollte das handeln können und entsprechend die Daten des ersten Users schreiben, dann die vom zweiten, ...  Slebst bei Massentests (auch mit Access) habe ich noch keine Probleme gehabt. Wenn Du es ganz genau wissen willst, kannst Du vor dem Schreibvorgang "Application.Lock" und danach aber auch auf jeden Fall "Application.Unlock" setzen.

* mussen RecordSet (RS) wieder geschlossen werden? Waas passiert wenn man dies nicht tut?

MDAC 1.5 handelte das eigentlich ganz gut. Bei jedem Verweis auf dasselbe Objekt (Neue Instanz mit Server.CreateObject("ADODB.Recordset")) wurde einfach ein Zeiger auf das Original-Objekt gesetzt. Da MDAC 2.x hierfür jedesmal ein neues Objekt erstellt, ist bei ca 50 Durchläufen (evtl. Schleife) die Performance merkbar im Keller.
Auch hier gilt dasselbe wie bei der Connection.
<%
Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open SQL, objConn, 3, 3
    ...
    objRS.Close
Set objRS = Nothing
%>

* ich brauche einen Browseruebergreifenden Befehl/Tag um vom Benutzer eingegebene Sonder-und Leerzeichen korrekt in die DB zu schreiben --> Versuche mit enctype="text/plain" blieben irgendwie erfolglos

Probier doch mal: Server.HTMLEncode(Text) oder Server.URLEncode(Text)
Wenn das nichts hilft, bleibt Dir nur der Weg über eine eigene Funktion:
<%
Private Function ConvertText(GivenText)

NewText = GivenText
NewText = Replace(NewText, "ä", "ä")
...
ConvertText = NewText

End Function
%>

Ich bedanke mich jetzt schon mal fuer Eure Hilfe!
Stefan S.