Laden...
Avatar #avatar-1724.gif
frisch myCSharp.de - Member
Fachinformatiker Anwendungsentwicklung Coburg / Oberfranken Dabei seit 18.08.2005 2.082 Beiträge
Benutzerbeschreibung
frisch durfte 2 Jahre lang auf eine Schule gehen und dort C und C++ lernen und dann musste er wieder von vorne anfangen... Meine Homepage ist in ASP.net programmiert. Einfach mal vorbeischauen. (Btw: Mir ist Funktionalität wichtiger als Design)

Forenbeiträge von frisch Ingesamt 2.082 Beiträge

11.03.2010 - 16:51 Uhr

Hallo multitasker,

du hast hier mehrere Möglichkeiten.

Wenn die Struktur der Xml-Datei immer gleich ist und sich nur die Anzahl an Elementen ändert, würde ich über XmlSerialisierung gehen, da sich dann mit den Daten imo am schönsten arbeiten lässt.

Performanter wäre hier allerdings deine Idee mit dem XmlReader, hierbei müsstest du aber am Besten die Datein so kurz wie möglich im Speicher halten, also anders gesagt, direkt 2 Streams öffnen, einen zum lesen und den anderen zum schreiben.

11.03.2010 - 16:25 Uhr

Hey Leute,

habe soeben via Feed erfahren, dass heise.de das Portal myCSharp.de vorstellt.

Herzlichen Glückwunsch.

Jetzt muss aber Schluss sein mit den SQL-Errors 😉

10.03.2010 - 15:05 Uhr

Hallo CSL,

wird in Notepad das ü auch falsch dargestellt?

Probier mal verschiedene Encodings im Visual Studion aus. (Auch mal Encoding.Default)

10.03.2010 - 14:50 Uhr

Hallo CSL,

das Problem müsste eigentlich dann schon bei der Serialisierung zu lösen sein. Zeichen wie < und > dürfen eben nicht geschrieben werden. Diese müssten vorher Transformiert werden. Ähnlich wie bei Html.

Du könntest die Datei ja einlesen und dir immer einen Teilbereich geben lassen. Eben vom ersten <XXX> bist zum nächsten </XXX> und dann den Content prüfen. Dafür würde ich aber einen gesonderten Wrapper schreiben.

10.03.2010 - 14:40 Uhr

Hallo anettwurfel,

ich würde das über das CellMouseClick-Event lösen. Da kannst du dann folgendes machen:

DataGridViewCell clickedCell = myDataGridView[e.RowIndex, e.CellIndex];
10.03.2010 - 14:30 Uhr

Es wäre allerdings besser die Daten im ApplicationData-Verzeichnis zu speichern, wegen den Zugriffsrechten. Dem kann ich nur beipflichten. Habe vor kurzem erst alle Einstellungsdateien im Projekt eines Vorentwicklers von mir auf den Ordner umgezogen.

Aber Achtung: Erstellst du eine Datei aus einer Anwendung die mit Adminrechten gestartet wurde, hat der normale User nicht alle Rechte auf die Datei... (das musste ich dann Manuell im QC machen, siehe hier)

09.03.2010 - 16:00 Uhr

Okok, sorry Leute aber ich hab da was Fatales übersehen.

Derjenige, der vor mir an diesem Projekt gearbeitet hatte, hat in der Klasse eine Property namens NewLine gemacht... nun steht da drin this.NewLine und die Property gibt wirklich nur "\n" zurück...

Vielleicht sollte ich meine Brille mal wieder putzen 😉

Sorry für die Mühe.

09.03.2010 - 15:48 Uhr

Hallo Community,

ich weiß nicht, ob dies schon einmal diskutiert wurde, aber um nach den Stichwörtern zu suchen hätte imo wenig Sinn, da diese sehr allgemein sind.

Ich konnte soeben folgendes Phänomen feststellen:

  1. Ich habe einen string (Zeile aus einem FileStream).
  2. Dieser enthält mehrere Semikolons und einige Zeilenumbrüche.
  3. Wenn ich nach .Contains(System.Enviroment.NewLine) prüfe, wird mir true zurückgegeben.
  4. Wenn ich .IndexOf(System.Enviroment.NewLine) mache, wird mir hier immer -1 zurückgegeben.
  5. Wenn ich .IndexOf("\n") mache, wird mir die Position zurückgegeben.

Meine Frage jetzt: Wodurch tritt dieses Ereignis auf? Liegt der Fehler im Encoding? (Utf8)

Nach meinem Verständnis müsste mir das Contains doch auch schon False zurückliefern.

08.03.2010 - 11:27 Uhr

Hallo JensonButton,

ich persönlich bin kein freund von Klassengenerierungen aus Xml-Schemas. Mag sein, dass dies zwar bequemer und schneller geht, als die Klasse selbst zu schreiben aber am Ende weißt du nicht, ob das wirklich alles passt was erzeugt wurde.

Ich würde dir raten, die Klassenstruktur selbst zu erstellen. Du wirst dann z.B. merken, dass die Feldbenennung deiner aktuellen Klasse schrecklich ist und du nicht wirklich soviel Attribute benötigst, wie gerade verwendet...

05.03.2010 - 17:56 Uhr

Hallo TBR,

ähnlich wie bei HTML brauchst du auch hier eine Encode-Methode.

z.B. dieser Link

05.03.2010 - 17:53 Uhr

Hallo Siedlerchr,

Account als eigene Klasse. (Kein s)
AccountList oder Accounts dann als eigene Klasse welche IList<Account> implementiert.
Darin kannst du dann schön Methoden zum Authentifizieren oder suchen von Accounts einbauen.

Du könntest natürlich (wenn du nicht soviel Arbeit haben willst) auch Dictionary<string, Account> verwenden da ja bestimmt Benutzernamen eh eindeutig sein müssen.

05.03.2010 - 17:50 Uhr

Hallo JensonButton,

der Fehler liegt imo darin, wie du die Attribute verwendest.

Also das:

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true,
                             Namespace="http://tempuri.org/MSRFMEA_2_1_2.ML")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace="http://tempuri.org/MSRFMEA_2_1_2.ML", IsNullable=false)]

Mehr dazu kann ich momentan nicht sagen, da ich nicht weiß, wie die komplette Klasse aussieht. Fakt ist, dass die Property für ADMIN-DATA eine eigene Klasse ist, genauso wie die Property für USED-LANGUAGES.

05.03.2010 - 17:41 Uhr

Hallo DaemNice,

wie kleines_eichhoernchen sagte, wird der ctor erst nach der Feldinitialisierung aufgerufen.

Du kannst das Ganze im Debugger beobachten, wenn du z.B. einen Haltepunkt bei "new MyClass()" machst und mit F11 Schritt für Schritt weiter machst.

05.03.2010 - 17:39 Uhr

Hallo aMuTeX,

willkommen im Forum.

Das Stichwort heißt "unmanaged" da findest du z.B. diesen Beitrag

05.03.2010 - 12:37 Uhr

Hallo cyanide,

z.B. so?

string[] letzteTokens = "Token1 Token2 Token 3 Token4".Split(new char[] { ' ' }, 2);
Console.WriteLine(letzteTokens[1]);
05.03.2010 - 12:34 Uhr

Hallo DavidT,

es reicht auch schon folgendes zu machen:

                comboBox1.Items.AddRange(new string[] { "adsf" });
                comboBox1.DroppedDown = true;
                comboBox1.Items.Clear();
                comboBox1.DroppedDown = false;

Lässt du DroppedDown weg, funktioniert das Ganze.

Ich gehe davon aus, dass Win versucht Item 1 zu zeichnen, dieses existiert ja aber nun garnicht mehr und BOOM Fehler.

Habe auf die Schnelle keinen Vergleichbaren Fall im Netz gefunden...

04.03.2010 - 16:29 Uhr

Hallo alle,

nur mal so am Rande, er hat das Stichwort DDE erwähnt. Imo sehr grausige Technologie und auch schon veraltet aber aus Kompatibilitätsgründen zu Steinzeitsoftware ist es ab und zu notwendig das zu implementieren.

Wir stellen in unserer Software auch DDE zur Verfügung eben weil andere Programme nur das unterstützen. Realisiert haben wir das Ganze mit NDde.

03.03.2010 - 17:41 Uhr

Hallo der-schlingel,

um wirklich sicher zu gehen müsste ich jetzt kurz Zuhause nachschauen wie ich es da gelöst habe aber ich glaube du musst das XmlInclude über die Base-Klasse setzen.

Beispiel (ungetestet):



    [System.Xml.Serialization.XmlInclude(typeof(MyChild))]
    public class MyBase {
    }

    public class MyChild : MyBase {
    }

    public class MySerializer {
        public static void WriteBase(MyBase obj, string path) {
            System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyBase));
            using(StreamWriter writer = new StreamWriter(path))
                serializer.Serialize(writer, obj);
        }
    }

Ansonsten halt wie 0815Coder sagte die ExtraTypes verwenden.

03.03.2010 - 16:47 Uhr

Hallo,

ich stehe gerade vor einem Rätsel, und zwar muss ich in einem Verzeichnis den Dateizugriff ändern. Das Ganze mache ich über DirectorySecurity und AddAccessRule. Ich brauche aber den Account für "Jeder" (unter deutschem Win7) Sprachunabhängig, da ich schätze, dass z.B. die Benutzergruppe im Ausland anders heißt.

Weiß jemand wie ich die Gruppe ermitteln kann?

Danke.

//Edit:

Kommando zurück. Habe jetzt herausgefunden, dass man das über die SIDs machen muss. Diese sind Sprachunabhängig. Jeder wäre hier also SID: S-1-1-0

Falls es noch jemanden interessiert hier eine Liste der SIDs

26.02.2010 - 17:28 Uhr

Hallo HeinzTomato,

wie der-schlingel schon sagt ist es egal. Genauso könntest du fragen, was man verwenden sollte bei "DesignerSerialization" oder "DesignerSerializationAttribute".

Ich verwende trotzdem immer die Schreibweise mit "()", da du bei vielen Attributen noch zusätzliche angaben machen kannst

Bsp: [XmlElement(ElementName = "MyCustomName")]

26.02.2010 - 17:24 Uhr

Hallo der-schlingel,

schau dir mal XmlIncludeAttribute an. Das dürfte sein, wonach du suchst.

25.02.2010 - 10:50 Uhr

Hallo Khalid,

Spitze, werd ich mal probieren.

Danke.

24.02.2010 - 14:01 Uhr

verwendetes Datenbanksystem: Microsoft SQL Server 2005

Hi,

ich bin zz. dabei meine ASP.net Anwendung mittels DB-Spiegelung sicherer (weniger Ausfälle) zu machen. Prinzipal, Spiegel und Zeuge sind schon aufgesetzt. Das Ganze funktioniert im SQL-Server auch soweit.

Meine Frage jetzt: wie kann ich in meiner Applikation sagen, auf welche DB es sich verbinden soll bzw. ist sowas mögich, ohne vorher zu prüfen "Wenn DB 1 verfügbar, zu DB 1 verbinden, andernfall zu DB 2".

Habe momentan eine eigene Klasse so aufgebaut, bei der man 2 DB-Verbindungen angeben kann und die korrekte Verbindung via CreateConnection zurück gibt. Ich versuche halt die Verbindung mittels sehr niedrigem Timeout aufzubauen sodass die Wartezeit möglichst gering ist.

Falls jemand schon mal so etwas ähnliches implementiert hat wäre ich sehr dankbar über eure Hilfe.

24.02.2010 - 10:25 Uhr

Hallo Tarion,

bist du dir sicher, dass das Icon nur dann noch bleibt, wenn das Programm unsachgemäß beendet wird?

Habe dieses Phänomen auch schon erlebt, wenn das Programm geschlossen wird. Das Icon bleibt solange, biss zu mit der Maus darüber fährst. Das lässt sich aber beheben, weiß jetzt nicht auswendig wie.

Ansonsten da wo ein Application.Run(new XForm()) machst:

Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
23.02.2010 - 10:16 Uhr

Hallo,

auch von meiner Seite aus muss ich sagen, als Abschlussprojekt völlig überladen.

Als Tipp: Dass du für deine Firma etwas entwickeln willst kommt schonmal gut an. Jetzt muss es aber nicht unbedingt etwas für die Firma sein, sondern du kannst dich auch an irgendwelchen Projekten beteiligen. Ich habe Beispielsweise eine Kundenverwaltung für unsere Software entwickelt und dann eben den Teil vorgetragen. Das war schon umfangreich genug glaube mir. Und wenn du 10 Stunden länger brauchst macht das i.d.R. auch nichts, schreib einfach dazu, dass du 2 Stunden länger gebraucht hast und gib einen triftigen Grund an 😃

22.02.2010 - 16:00 Uhr

Hallo Daniel_3_17,

interessant wäre zu wissen, ob du etwas im Session_Start oder Application_Start-Event machst (in der global.asax).

Kannst du das Problem auf deiner lokalen Maschine nachvollziehen? Also per Debugging und einfach mal ne halbe Std. die Webseite lokal nicht aufrufen?

12.02.2010 - 14:21 Uhr

Hallo,

Hat zufällig jemand eine Idee was ich hier falsch mache?

ich würde mal sagen

Application.DoEvents()

Verwende lieber einen BackgroundWorker und zwar in der Funktion Position().

Lohnenswert wäre auch etwas zu implementieren, das Position nur dann ausführt, wenn die Funktion nicht bereits ausgeführt wird. Zum Beispiel durch stoppen des Timers und wieder fortsetzen am Ende der Position-Methode.

12.02.2010 - 12:09 Uhr

Soweit ich mich erinnere sind dass dann die System-Order wie $RECYCLE.BIN oder SystemVolumeInformation. Diese Ordner kannst du abfragen indem du nach _DirectoryInfo di = new DirectoryInfo(dir); _ folgendes schreibst:

if (di.Attributes.HasFlag(FileAttributes.System)) return;  

MfG TripleX Guter Ansatz aber leider ist dies nicht der Fall.

Der Fehler tritt beim Verzeichnis "C:\Windows\CSC\v2.0.6" auf und hat als Attribut nur "Diretory".

12.02.2010 - 11:14 Uhr

Hallo,

ich bin gerade bei einem ähnlichen Problem und wollte das Ganze aber SAUBER lösen und nicht Hardcoremäßig einfach eine Exception werfen lassen.

Hier was ich gemacht habe:

        private bool HasRightsForFile(string file, FileSystemRights requiredRights) {
            FileInfo fi = new FileInfo(file);
            FileSecurity fs = fi.GetAccessControl(AccessControlSections.Access);

            return HasRequiredRights(fs.GetAccessRules(false, true, typeof(SecurityIdentifier)), requiredRights);
        }

        private bool HasRightsForDirectory(string dir, FileSystemRights requiredRights) {
            DirectoryInfo di = new DirectoryInfo(dir);
            DirectorySecurity ds = di.GetAccessControl(AccessControlSections.Access);

            return HasRequiredRights(ds.GetAccessRules(false, true, typeof(SecurityIdentifier)), requiredRights);
        }

        private bool HasRequiredRights(AuthorizationRuleCollection rules, FileSystemRights requiredRights) {
            foreach(AuthorizationRule rule in rules) {
                if(rule is FileSystemAccessRule) {
                    FileSystemAccessRule fsar = (FileSystemAccessRule)rule;
                    if((fsar.FileSystemRights & requiredRights) == requiredRights)
                        return true;
                }
            }

            return false;
        }

Das klappt soweit auch bei fast allen Dateien und Ordner. Manche Ordner werfen aber bei dem Punkt

di.GetAccessControl(AccessControlSections.Access);

schon die UnauthorizedAccessException...

Liegt wohl daran, dass ich nichtmal das Recht habe, mir die Verzeichnisinformationen zu holen.

05.02.2010 - 17:06 Uhr

Hallo,

ich sehe auch ein Problem bei der Initialisierung der worker.

Meine Frage ist

  1. Warum ein übergabeparameter der nie genutzt wird?
  2. Woher kommt workerQueue? Wann werden da worker hinzugefügt?
  3. Wozu ist die Variable workers gut?

Der QC ist sehr unsauber, vielleicht solltest du da mal aufräumen. z.B. entscheiden, ob du nun eine Queue verwenden willst oder doch gleich mehrere worker auf einmal startest.

Du könntest z.B. auch all deine Worker in einer Klasse auslagern die dann entscheidet wieviele Worker z.B. auf einmal aktiv sein dürfen und diese Klasse besitzt dann auch ein Cancel-Flag welches für alle Worker gilt.

05.02.2010 - 16:18 Uhr

Hallo Passi,

wie siehts mit dem debuggen aus?

Man müsste halt jetzt noch wissen wie die BackgroundWorker instanziiert werden und wann DoWork aufgerufen wird...

 // Result == -2 -> Operation cancelled
            if (res == -2)

Hier solltest du lieber auf das CancellationPending des workers prüfen.

Man kann nicht sagen wo hier der Fehler liegt, da wesentlicher QC fehlt

05.02.2010 - 14:09 Uhr

Hallo S.H.-Teichhof,

wie herbivore gesagt hat ist die DB-Struktur relativ egal. Die Daten darin darfst du eben nur dann verwenden, wenn der Kunde sie entweder selbst eingegeben hat, oder du eine Lizenz dazu besitzt.

Wir selbst haben z.B. einen ähnlichen Fall. Wir bekommen von einem anderen Dienstleister regelmäßig Daten die wir dann in unserer Software verwenden können. Die DB-Struktur unterscheidet sich hier ein wenig (z.B. Spaltennamen anders). Für jeden Kunden müssen wir aber Lizenzgebühren an den Datenlieferanten zahlen.

05.02.2010 - 12:12 Uhr

Hallo,

im Notfall einfach ein private Array benutzen

public MyForm(){
  InitializeComponents();

  toggleControls = new Control[] {
    label1, textBox1, button1 //etc.
  };
}

private Control[] toggleControls;

private void ToggleControls(bool visible){
  foreach(Control ctrl in toggleControls)
    ctrl.Visible = visible;
}

Ein Panel zu verwenden (falls möglich) ist hier natürlich die bessere Variante.

05.02.2010 - 12:08 Uhr

Hallo DellaRocco,

as gleiche Problem tritt auch dabei auf, wenn ich die Anwendung geöffnet habe und nach dem Aufruf eines Services erstmal nichts mache. Machst du da wirklich nichts oder kann es sein, dass du die Dateien auf dem Server durch eine neue Version deines Dienstes aktualisierst?

Grundsätzlich gilt, dass beim allerersten Mal, wenn eine Webkomponente aufgerufen wird, wird das Ganze erstmal kompiliert. Der Server kompiliert die Dateien jedes Mal neu wenn du die Dateien aktualisierst/änderst. Deshalb dauerts dann auch so lange.

(Ist zumindst bei ASP.net so, sollte bei asmx-Dateien aber das gleiche sein, berichtigt mich falls ich falsch liege)

Wenn du deine Benutzer nicht warten lassen willst, einfach nach Aktualisierung der Dateien den Dienst selbst erstmal aufrufen.

28.01.2010 - 18:08 Uhr

Hallo,

vermutlich ist das "Encoding" falsch gewählt, aber ohne Code kann man da nur mutmaßen. War auch mein erster Gedanke. Ansonsten dürfte das Problem an Seite der Schnittstelle zu suchen sein. Ein ersetzen der "Leerzeichen" ist eine Katastrophale vorangehensweise.

22.01.2010 - 15:58 Uhr

Hallo wickedcsharper,

auf CodeProject gibt es dazu einen guten Beitrag, der Beschreibt, wie du prüfen kannst, ob der User Administrationsrechte hat und wie du die Anwendung dann als Administrator neu starten kannst.

Add a UAC shield to a button when elevation is required for admin tasks

29.12.2009 - 17:56 Uhr

(

das ist doch nicht leer - sind 3 icons zuviel #gg Imho nur 2 zuviel. Der Warenkorb hat schon seine Daseinsberechtigung.){gray}

29.12.2009 - 12:44 Uhr

das using sollte unbedingt weg. Ein Strom darf nicht geschlossen werden, solange das aus ihm erzeuge Bitmap-Objekt existiert. Stimmt, daran hatte ich in dem Moment garnicht gedacht.

29.12.2009 - 12:43 Uhr

Hallo,

dann noch ein paar Gedankengänge von mir:

  • Verteilerlisten
  • Scheduled Messaging (Nachrichten senden "sofort" oder "am X um Y Uhr")
29.12.2009 - 12:07 Uhr

Hallo Masterblume,

verstehe das Problem nicht, würde aber eher ein using um den Stream setzen um sicher zu gehen, dass der Stream nicht offen bleibt.

Außerdem würde ich die Exception trotzdem mit ausgeben:

try
{
   using(System.IO.MemoryStream ms = new System.IO.MemoryStream(ub.Bilddata)){
      Pic1 = new Bitmap(ms);
   }
}
catch (Exception ex) { 
  Pic1 = null;
  throw ex;
}
28.12.2009 - 17:21 Uhr

Hallo math55,

bloß nicht so weiter verfolgen, das geht am Stil der OOP vorbei.

Was wird verwendet? DropDown aus einem StatusStrip oder vielleicht ToolStrip? ComboBox?

Einfach wäre z.B. ein UserControl abgeleitet vom verwendeten Control und dann die Darstellung und Handhabung der Daten selbst machen.

Nie Sachen wie ab.Parse(xy.ToString()) machen, wenn du vorher schon einmal einen konkreten Datentyp hattest.

24.12.2009 - 11:05 Uhr

Frohe Weihnachten usw. auch von mir. Hab noch 2 Stunden zu arbeiten dann wird entspannt...

18.12.2009 - 16:31 Uhr

Hallo,

in C++ würde man dafür (im allg.) einen Kopierkonstruktor verwenden. Den gibt es so direkt in C# nicht. Eine Möglichkeit zeigt
>
Ahhhh... sowas ist ja grausam. Was bezweckt dieses Konstrukt? Für solche Zwecke nimmt man doch Clone() oder irre ich mich da?

18.12.2009 - 11:20 Uhr

Komsich, geht es um Gewalt in Deutschland kommen immer Ausländer vor. Um es vorweg zu nehmen, ich habe nichts gegen Menschen, von wo auch sie immer abstammen, solange sie sich benehmen. Aber zurück zum Thema. Ich bin hier ganz deiner Meinung. Man kann das aber nicht pauschalisieren. Bei uns in der Stadt (das ist echt ne kleine Stadt, 40k Einwohner oder so) gibts regelmäßig auf die Fresse. Halt immer nur am Wochenende. Meist auch Ausländer mit beteiligt.

Vor kurzem war aber der Fall, dass jemand von einer Gruppe zusammen geschlagen wurde. Warum? Er hatte getrunken und ist beim Tanzen ausversehen in die Gruppe gefallen... Er hatte danach um das Augenlicht seines einem Auges kämpfen müssen. Sowas ist echt mies.

Ich hatte auch schon Konfrontationen. 2 mal mit Westeuropäern und ansonsten mit einer Gruppe aus D. Wobei das mit der Gruppe aus D so eine Sache war. Es war halt das typisch alte "Gruppe A mag Guppe B nicht" was sich halt dann auf jeder Feier abgespielt hat. Hierbei flogen aber nie die Fäuste, lediglich böse Blicke wurden ausgetauscht. Ich bin ja kein Schläger 😉

Noch so am Rande: Ich musste neulich meine Mutter Nachts von der Weihnachtsfeier ihres Kegelvereins abholen weil diese Angst hat, Nachts alleine durch die Stadt zu laufen...

04.12.2009 - 12:11 Uhr

Hallo,

aber warum machst du einen Commit, falls die Transaktion fehlschlagen sollte?

Zusätzlich würde ich statt Parameters.Add lieber Parameters.AddWithValue verwenden. So sparst du dir ein paar Zeilen und musst den Typen nicht explizit angeben.

04.12.2009 - 11:36 Uhr

Hallo andry42,

ich verstehe dein Problem nicht. Du kannst doch beide Spalten prüfen. Vorher wäre es halt wichtig, dass du prüfst, ob denn überhaubt beide Spalten einen Wert enthalten.

Ansonsten probier mal das CellValueChanged-Event, da CellEndEdit soweit ich weiß auch dann greift, wenn der User mit dem Bearbeiten abbricht.

Schau dir auch mal die Cell.Value und Cell.EditedFormattedValue an. Ggf. kannst du dann prüfen ob die neue Value falsch ist und ein CancelEdit durchführen.

27.11.2009 - 18:03 Uhr

Hallo markus111,

ohne jegliche Fehlermeldung?

Ansonsten Cleanup "Visual Studio 2008"

Die Links sehen viel versprechend aus. Sind halt auch viele dabei mit "Before SP 1 Install" aber vielleicht klappen die ja.

25.11.2009 - 17:48 Uhr

Wenn sich alle 3 Schichten untereinander kennen, macht es doch imho kaum Sinn, diese voneinander zu trennen. (Außer der Übersichtlichkeit wegen)

25.11.2009 - 17:27 Uhr

Hallo CurdledMilk,

den ConnectionString würde ich wenn dann überhaupt irgendwo als internal const string definieren.

Der DataAdapter macht global keinen Sinn, du instanziierst ihn in deiner Funktion ja eh immer wieder neu. Da reicht also eine Variable innerhalb der Methode.

DataSets mag ich überhaupt nicht. Macht das ganze zwar bequemer aber vor allem in großen Projekten habe ich damit negative Erfahrungen gemacht.

Wenn ich eine Procedure ausführe wird jegliche Änderung sofort auf dem Datenbankserver durchgeführt.

Wenn du ein anderes Verhalten willst, musst du Transactions verwenden mittels der SqlConnection.BeginTransaction-Methode. Am Ende dann halt Commit oder Rollback ausführen.

Bsp (ungetestet aber so in der Art funktionierts):

public void Execute(SqlConnection conn, SqlCommand comm){
 SqlTransaction trans = conn.BeginTransaction();
 try {
  comm.Transaction = trans;
  comm.ExecuteNonQuery();
  trans.Commit();
 }
 catch (Exception ex){
  trans.Rollback();
  throw ex;
 }
}

Noch zum Schluss ein kleiner Tipp: Verwende usings um die Connections. Aktuell schließt du deine Connection z.B. nirgends. Fataler Fehler!

20.11.2009 - 18:00 Uhr

Ich bin zwar selbst erst 19 Jahre alt aber trotzdem der Meinung das sich die Entwicklung des Mediums Computer eher Negativ als Positiv auf die Jugend auswirkt.

Ich war zu der Zeit 21, er glaube ich auch oder zumindest 20.

Spiele heute btw auch eher seltener. Wenn ich mal was spiele dann eher kurz PS2 (Kingdom Hearts ist ein echt gutes RPG) oder halt am PC Warcraft 3.

Das mit dem Feiern hat sich auch ziemlich gelegt. In der Regel nurnoch ca. alle 2 Wochen. Könnte auch an der Freundin liegen, da braucht man dann nicht immer fort sondern kann mal nen ruhigen Abend zuhaues im Bett verbringen.

Und JA damit meine ich wirklich ruhigen und nicht was ihr jetzt vielleicht denkt 😃