NET-Referenzen:

[  → ]

Hier eine Sammlung von Links um einen Überblick über die Möglichkeiten des NET-Frameworks zu erhalten.
Zum Teil sind hier die Referenzen aus obigem Kontext wiederholt.

ADO.NET Übersicht

[  → ]

Über ActiveX Data Objects(ADO) stehen Klassen zum Zugriff auf relationale Datenbanken zur Verfügung.
Hier ein kurzer Überblick um das Zusammenspiel der Klassen und die Einsatzmöglichkeiten zu erkennen.

  1. Connection
  2. Command
  3. DataReader
  4. DataAdapter
  5. DataSet (InMemory Database)
  6. DataTable

Die Connection-Klasse stellt 4 DataProvider zur Verfügung:
      SqlConnection
      OleDbConnection
      OdbcConnection
      OracleConnection

Code-Beispiele

Es bestehen dann z.B. für den Zugriff auf Oracle-DBs eigene Klassen im Namesraum System.Data.OracleClient-NameSpace.
Die Steuerung des Zugriffs erfolgt aber bei allen DataProvidern in der selben Art und Weise.

Die Command-Klasse unterstützt verschiedene Abfrage-Aktionen mit der Datenbank:
      ExecuteReader(Ergebnisliste von Datensätzen),
      ExcecuteNoneQuery(Datenbankänderungen),
      ExecuteScalar(Einzelner Wert z.B. Anzahl Datensätze)

Der DataAdapter unterstützt verschiedene Update-Aktionen:
      SelectCommand
       UpdateCommand
       InsertCommand
       DeleteCommand

Wobei für die DataAdapter-Klasse die beiden Hauptmethoden Fill und Update(Update-Aktionen) existieren.

Zum Verständnis,
   der 
DataSet stellt als InMemory Datenbank eine Spezialität dar, da hier Daten losgelöst
   von der Datenbankverbindung im Speicher geändert werden können.
   Die DataSets können von einem GridView-Element innerhalb einer WebForm konsumiert
   werden(ASP.NET-Anwendung
).

Die Klassen
   DataSet (Repräsentation der Daten)  bzw.
   DataTable
arbeiten verbindungslos.

Beispiel

string strCon = @"Data Source=SONY\MYSQLSERVER;" +
  "Initial Catalog=Northwind;Integrated Security=SSPI";
  string strSql="select * from customers";
  SqlConnection con=new SqlConnection(strCon); 
  con.Open();
  
  SqlDataAdapter dadapter=new SqlDataAdapter();
  dadapter.SelectCommand=new SqlCommand(strSql,con);
  DataSet dset=new DataSet();
  dadapter.Fill(dset);
  con.Close();
  
  this.dataGrid1.DataSource=dset;

 

Das Zusammenspiel der einzelnen Klassen ist hier ersichtlich.

Ein Code-Beispiel das eine Änderung in einer Datenbank vornimmt: d.h. ExecuteNoneQuery

Office-Objekte über C# verarbeiten

[  → ]

Der Zugriff auf Office erfolgt über Office-Interop-Objekte mit Hilfe von C#-Funktionen

Hier ein Beispiel:

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;

 

namespace OfficeAccess
{
    public partial class Form1 : Form
    {
        public Form1()
        {

            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Excel aufrufen
            var excelApp = new Excel.Application();
            excelApp.Visible = true;
            excelApp.Workbooks.Add();
            Excel._Worksheet worksheet = (Excel._Worksheet)excelApp.ActiveSheet;
            worksheet.Cells[1,1]="Wert1";
        }

 

        private void button2_Click(object sender, EventArgs e)
        {
            //Word
            var wordApp = new Word.Application();
            wordApp.Visible = true;
            wordApp.Documents.Add();        
            wordApp.Selection.InsertAfter("Test Word");
       }
    }
}

 

XML-Datei einlesen

[  → ]

Über die Klasse XDocument lässt sich eine XML-Datei mit wenig Aufwand einlesen (LINQ to XML).

Beispiel:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace ReadXMLDoc
{
    class Program
    {
        static void Main(string[] args)
        {
            XDocument xml = XDocument.Load(@"C:\Temp\setting.xml");
            var xmlQuery = from item in xml.Descendants("settings")
                           select item;

            foreach (XElement items in xmlQuery)
            {
                Console.WriteLine(items.Element("Datum").Value);
                Console.WriteLine(items.Element("Wert1").Value);
                Console.WriteLine(items.Element("Wert2").Value);
                Console.WriteLine(items.Element("Wert3").Value);
                Console.WriteLine(items.Element("Wert4").Value);
            }
            Console.ReadLine();
        }
    }
}

 XML-Datei: setting.xml
<settings>
<Datum>9 Januar</Datum>
<Wert1>eins</Wert1>
<Wert2>zwei</Wert2>
<Wert3>drei</Wert3>
<Wert4>vier</Wert4>
</settings>

 

Alternativ kann ein XML-Stream verarbeitet werden (z.B. aus einem Webservice)

Es werden die Knoten des XML-Streams durchlaufen und über switch/case einzelne Textelemente gelesen.

Beispiel:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Xml;

namespace WbsRequest
{
 var stream = t.Result;
 using (var reader = new StreamReader(stream))
  {
   ename = "";
   outList = "";
   XmlTextReader xmlreader = null;
   xmlreader = new XmlTextReader(stream);
   i=0;
     while (xmlreader.Read())
    {
    switch (xmlreader.NodeType)
   {
    case XmlNodeType.Element: // Der Knoten ist ein Element.
          ename=xmlreader.Name;
          break;
    case XmlNodeType.Text: //Anzeige des Textes in jedem der Elemente.
         if (ename == "postalcode")
         {
             i = i + 1;
             outList += xmlreader.Value + "?";
             Orte[i] = xmlreader.Value;
         }
        if (ename == "name")
        {
            outList += xmlreader.Value + "|"; //letztes Element
            Orte[i] = xmlreader.Value;
        }
        break;
    case XmlNodeType.EndElement: //Ende der Elementanzeige.
       Console.Write("</" + xmlreader.Name+">");
       break;
   }

 }
}

Console.ReadLine();
}

Personen in einer Liste verwalten

[  → ]

Auch komplexe Objekte können in Listen verwaltet werden.
Die Verwaltung erfolgt in einer Collection.

Listing:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; 

namespace ConsoleApplication1
{

    class Program
    {

        static void Main(string[] args)
        {

            //Liste anlegen
            List<Person> Personen = new List<Person>();

            Personen.Add(new Person("Einstein","Teststr. 10","70565","Stuttgart"));
            Personen.Add(new Person("Maier", "Neuestr. 14", "70565", "Stuttgart"));
            Personen.Add(new Person("Bauer", "Hauptstr 5", "8000", "München"));

            //Personen ausgeben
            foreach (Person p in Personen) {
                Console.WriteLine(p.Name+" / "+p.Strasse+ " / " + p.Plz+ " / " + p.Ort);
            }

            //Person anlegen
            Person micha = new Person("Mustermann","Neuer Weg 10","60000","Frankfurt");
            micha.Name = "Müller"; 

          Console.WriteLine(micha.Name);
            Console.ReadLine();

        }

    }

 class Person

    {

      private string name;
        private string strasse;
        private string plz;
        private string ort;

         //Kontruktor
        public Person(string sName, string sStrasse,string sPlz, string sOrt)
        {
            name = sName;
            strasse = sStrasse;
            plz = sPlz;
            ort = sOrt;
        }     

       //Getter Setter Methoden
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }

        public string Strasse
        {
            get
            {
                return strasse;
            }

            set
            {
                strasse = value;
            }
        }

        public string Plz
        {
            get
            {
               return plz;
            }

            set
            {
                plz = value;
            }
        }

         public string Ort
        {
            get
            {
                return ort;
            }

            set
            {
                ort = value;
            }
        }
    }
}

Source-Code

Klasse Person