| 

.NET C# Java Javascript Exception

4
Gibt es eine Möglichkeit den SQL Commandtimeout für eine Anwendung global zu setzen?
News:
04.10.2011
schnowboard 237 6
3 Antworten
-1
Du kannst allenfalls z. B. im FormLoad schon definieren

com.CommandTimeout = 1200

Das mache ich öfters, ist aber auch nur ein workaround.
04.10.2011
muffi 1,4k 1 9
Du nutzt nur ein Command-Object in deinem ganzen Project?
Floyd 05.10.2011
Nein, aber in jeder Klasse.
muffi 05.10.2011
2
Datenzugriffsobjekte haben in der GUI nichts zu suchen und gehören in den Dataaccesslayer. Sorry.
Jürgen Luhr 05.10.2011
Und das darf man nicht in eine Klasse auslagern? :-O
muffi 05.10.2011
Das Auslagern ist hier nicht relevant. Die GUI sollte nichts über den Datenzugriff wissen. Sie bekommt nur Daten geliefert, z.B. als Entitäten.
Jürgen Luhr 05.10.2011
Ich glaub Jürgen bezieht sich speziell auf das: "im FormLoad schon definieren [...] Das mache ich öfters"
Floyd 05.10.2011
Eigentlich wollte ich nichts mehr dazu kommentieren... es gibt für ein Problem halt einfach verschiedene Herangehensweisen. "Öfters" heißt ja nicht ständig. Zudem tun sich so (ehemalige) Assembler-Programmierer eh immer ein bischen schwer mit Kapselung und OOP. Bei Jürgen ist das halt ein bischen anders ;-)
muffi 05.10.2011
1
@muffi: Meine erste Programmiersprache war Assembler ;). Aber zur Sache: Du erzeugst in jeder Klasse ein Command-Object, setzt also in jeder den Timeout. Bei Änderung heißt es: Suchen nach "CommandTimeout = 1200" und ersetzen mit "CommandTimeout = 1800". Das funktioniert, ist aber schlecht wartbar. Daher mein Vorschlag mit der Hilfsklasse ggf. in einer eigenen Assembly, nah an der Datenbank. So wird der Timeout an einer einzigen Stelle definiert.
Wir suchen hier optimale Lösungen zu Problemen. So wünsche ich mir gerne weitere Kommentare und Antworten von dir :).
Jürgen Luhr 05.10.2011
Dass ich nichts mehr kommentiere, war krumm ausgedrückt, ich meinte in der Sache hier (diese Objekt sozusagen *BEG*). In meinem aktuellen Projekt habe ich diverse Forms. Manche brauchen nicht einmal die MySQL-Anbindung. Die Meisten haben den Standard-Timeout von 30, aber in manchen muss ich eben aufgrund von Abfragen einfach andere Zeiträume zulassen (bis 1200). Und genau in den Forms (genauer in den Klassen) definiere ich das Timeout einfach höher. Und Dein Konstrukt mit der Hilfsklasse weicht genau betrachtet gar nicht so weit von meiner Art der Lösung ab...!
muffi 05.10.2011
6
Noch ein workaround über eine Hilfsklasse:
class SqlHelper
{
public static SqlCommand createCommand()
{
SqlCommand cmd = new SqlCommand();
cmd.CommandTimeout = 60;
return cmd;
}
}


Statt:
SqlCommand myCommand = new SqlCommand();

erzeugst du den SqlCommand mit:
SqlCommand myCommand = SqlHelper.createCommand();
04.10.2011
Jürgen Luhr 7,1k 2 9
2
Leider nein.
04.10.2011
Floyd 14,6k 3 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH