Zum Inhalt springen

Mcolli

Mitglieder
  • Gesamte Inhalte

    103
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Mcolli

  1. abfrage.ExecuteNonQuery() gibt einen int Wert zurück, der die Anzahl an betroffenen Datensätzen liefert. abfrage.CommandText = "SELECT * FROM inlist"; Selektiert nur Datensetzte verändert diese aber nicht. Lösung: abfrage.CommandText = "SELECT * FROM inlist"; abfrage.Connection = con; using (IDataReader reader = abfrage.ExecuteReader()) { int anzahlZeilen = 0; while (reader.Read()) { anzahlZeilen++; String wertSpalte1 = reader[0].ToString(); int zahlInSpalteMitNamenXY = Convert.ToInt32(reader["XY"]); int anzahlSpalten = reader.Depth; } } con.Close(); Desweiteren würde ich Dir folgende Microsoft Biliothek empfehlen: Enterprise Library Eine Komponente davon heisst "Data Application Block". Nach der Installation sind die Dlls im GAC registriert und du kannst Sie als .Net Verweis deinem Projekt hinzufügen und dann benutzen. Die nötigen Dlls werden dann in das Ausgabeverzeichnis kopiert und du musst die Library nicht auf dem Zielrechner der Anwendung installieren. Vorteil: Abtraktion der Datenbankzugriffe erlaubt einheitlichen Umgang mit verschieden Datenquellen. Du kannst einfach auf DataSets zugreifen und diese dann auch bequem als DataContext bei Steuerelementen einrichten. einfach schreibweise. Las but not least kannste die Verbindungszeichenfolge für ConnectionStrings in der App.config hinterlegen und so, gerade bei *.mdb Datenquellen den Speicherort ändern ohne was im QuellCode zu ändern.
  2. Mcolli

    Programm Dokumenta-was?

    Ich rede nicht von Inline-Kommentaren sondern Klassen-Kommentaren(Was kann die Klasse), Methoden Signatur Kommentaren (was macht die Methode, welche Parameter, was gibts sie Zurück), Enum-Kommentaren, Propertie Kommentaren usw. Am Ende sollte man sowas erstellen können: MSDN Auszug Solche Kommentare nicht zu machen ist sehr schlechter Programier-"Stil". Ich kann Dir aus eigener Erfahrung sagen, ein Programm, das man nicht selber geschrieben hat, aufzubohren dauert ewig wenn diese Kommentare nicht gemacht werden. Ausserdem gibts nen guten Grund dafür, das Visual Sudio die nötigen Kommentare-Blöcke per Autoergänzung anlegt wenn man an der richtigen Stelle 3x "/" ohne " schreibt.
  3. In diesem Thread wollte ich eine, evtl. schon bekannte, gute Möglichket der Programmdokumentation beschreiben, die auf Quellcode-Kommentaren von .Net Anwendungen basiert und im Look einer Standart .Net-Dokumentation erscheint. Dokumentation warum? In vielen Unternehmen scheint mir, aufgrund enormen Zeitdrucks bei der Entwicklung kleinerer Anwendungen, keine Dokumentation-Pflicht zu bestehen. Daher stellt sich natürlich die Frage warum Dokumentieren. Die Antwort ist Simpel: Wenn man als Entwickler bei der Entwicklung einer Anwendung darauf bedacht ist zu den Klassen, Felder, Attributen und Methoden Kommentare vor deren Implentierung zu schreiben, sollten Designprobleme, wie eine Methode mit 5 Parametern von denen 3 zu 99% mit null belegt werden, vorzeitig erkennbar sein. Ausserdem erleichtert eine solche Annhährung an ein Problem meistens nicht den Blick für das große Ganze zu verlieren. Somit ist der Quellcode leicht verständlich und wenn man selbst oder ein anderer eine modifizierung des Programms vornehmen soll, kann dies schon nach kurzem Einlesen ohne IDE erfolgen. Wie wirds gemacht? Zunächste ich wichtig, dass man alle nötigen XML-QuellCode Kommentare setzt. Die gehschiet, wenn man den Cursor über Beispielsweise eine Mehtode setzt und dann 3 mal "/" ohne " schreibt. In Visual-Studio wird damit für einen kommentierungsrelevanten Teil ein abschnit mit den nötigen XML-Tags erzeugt. Dieser muss dann zwischen den Tags mit Sinn gefüllt werden. Bei den Eigenschaften des Projekts im Projektmappenexplorer (Rechtsklick auf das entsprechende Projekt und dann "Eigenschaften") kann man dann unter dem Karteireiter "Erstellen" die Checkbox "XML Dokumentatiosdatei" aktivieren und einen Ausgabe Pfad bestimmen. Die Umwandlung erfolgt dann mittels eines Zusatzprogramms "Sandcastle" zu finden unter: Sandcastle - Documentation Compiler for Managed Class Libraries Dies ist ein Komandozeile basieretes Projekt das mittels Reflektion und der XML Dokumentationsdatei eine tolle Dokumentation aufbereitet. Um nicht in alter Dosmanier alle Parameter per Komandozeile anzuhängen gibts die GUI Lösung in Verbingung mit oben genannten Sandcastle: (Sandcastle Help File Builder) Sandcastle Help File Builder Letzten Endes kommentiert Ihr einfach den Quellcode erzeugt beim Buildvorgang wie obenbeschrieben die XML-Doku und erstellt eine neues "Sandcastle Help File Builder" Projekt, bei dem Ihr Eure Projektdatei unter "Documentation Sources" angebt und führt den Buildvorgang für das "Sandcastle Help File Builder" Projekt aus. Ein gutes schnelles Tutorium haben die auch (bezieht sich auf das erstellen der Helpfile ... nach Installation der Software (die Links oben) und Kommentierung des Quellcodes des eigen Projektes) http://www.ewoodruff.us/shfbdocs/html/
  4. Jo mein Fehler ... dachte mit abtrakten Klassen geht das
  5. Haste natürlich Recht. Wobei Interface in C# im verglecih zu Java schon an bedeutung verliert da man von mehreren Klassen erben kann... @ Topic nochmal Ich hab noch mal nachgedacht und als Ergänzung ist mir eingefallen, dass Du Dich evtl mal der Microsoft Biliothek "Enterprise Library" anfreunden könntest. Unteranderm hat diese eine sogenannten Data Application Block der sich mit der Abstraktion von Datenbank Zugriffen beschäft. Ich hab vor ca. 6 Monaten angefangen damit zu arbeiten und die Enterprise Library ist ein wundervolles Werkzeug um mit unterschiedlichen Datenquellen syntaktisch glecihbleibend zu Arbeiten. Und das beste: Es ist alles Idiotensicher. Typches Snippet wäre: // "meineQuelle" ist in der Appconfig hinterlegbar und bildet einen // ConnectionString Database db = DatabaseFactory.CreateDatabase("meineQuelle"); using (IDataReader reader = db.ExecuteReader(CommandTye.Text, "Select o.Wissen From table_mcolli)) { while (reader.Read()) { // Blabla } } Kannst auch DataSet Abfragen als DataContext angeben und soweiter. WICHTIG nur: bei dem ConnectionString in der App.config das Attribut pooling=false setzen. Wenn Du Passwort Attribute setzt kannst DU das auch mit dem Cryptodingsbums Applicationblock chiffrieren. Auf unserer Oracle 10g Datenbank hatte ich bei einer eigenen Multithreaded Anwendung vorher >40 Sessions auf
  6. Willkommen in der Dll-Hell Das was Du da versuchst nennt sich dynamische bzw. späte Bindung. Dabei ist der Ansatz, dass Du mit der "System.Reflection" Bibliothek Objekte erzeugst deren Typ dann mit der von "object" geerbten Methode "getType()" ermittelst und dann z.B. mit der Methode "InvokeMember(...)" der Klasse Type Methoden oder Properties aus der dynamisch erzeugten Instanz der ermittelten Klasse aufrufst. Hört sich kompliziert und umständlich an. zu kompliziert: Nein zu umständlich: Auf jeden Fall jetzt mal Butter bei die Fisch: Assembly currentAssembly; string classNameSQLiteConnection = "System.Data.SQLite.SQLiteConnection"; string classNameSQLiteCommand = "System.Data.SQLite.SQLiteCommand"; if (IntPtr.Size == 8) //64 bit System currentAssembly = Assembly.LoadFile(""); else currentAssembly = Assembly.LoadFile(""); object objConnection = currentAssembly.CreateInstance(classNameSQLiteConnection); object objCommand = currentAssembly.CreateInstance(classNameSQLiteCommand); // Beispiel MethodenAufruf objConnection Type connType = objConnection.GetType(); int irgendeinParameter = 7; String nochirgendeinParameter = ";)"; connType.InvokeMember("gesuchterMethodenName", BindingFlags.InvokeMethod, null, objConnection, new object[] {irgendeinParameter , nochirgendeinParameter}); // Beispiel Get-Propertie objCommand Type comType = objCommand.GetType(); String conString = (String)connType.InvokeMember("ConnectionString", BindingFlags.GetProperty, null, objCommand, new object[] { }); Solang du Keine (abstrakte) Oberklasse zu den in Frage kommenden Konkreten Instanzen von bsp. "System.Data.SQLite.SQLiteConnection" hast, die auch noch alle benötigen Methoden (abstrakt) deffiniert hat, kannst du nicht Casten. Wenn du eine Solche Klasse hast gehts auch so. .... AbstrakterTyp oberklasse = (AbstrakterTyp)objCommand ; String conString = oberklasse.ConnectionString;

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...