Laden...

Wie mit C# auf Datenbank zugreifen und FrontEnd einsetzen

Erstellt von nfb503 vor 12 Jahren Letzter Beitrag vor 12 Jahren 7.346 Views
N
nfb503 Themenstarter:in
20 Beiträge seit 2012
vor 12 Jahren
Wie mit C# auf Datenbank zugreifen und FrontEnd einsetzen

verwendetes Datenbanksystem: <Access>
Hallo Forum,

ich hoffe, hier einige Anregungen und auch Hilfe zu erhalten.
Seit zwei Wochen beschäftige ich mich mit C#, habe mir das Entwicklerbuch sowie eine DVD gekauft. Leider beantwortet das nicht meine Fragen, denn ich stehe vor folgender Herausforderung. Bislang habe ich über Excel eine Verwaltungsdatenbank programmiert (Excel als Frontend, die auf eine andere Exceltabelle als Datentabelle zugreift).
Dies soll nun in einer C# Anwendung geschehen.
Die Methoden selber machen mir keine Kopfschmerzen, aber wie ich über C# folgendes realisieren kann. Ich erwarte natürlich keine schnelle Lösung, sondern welchen Ansatz ich verfolgen sollte.

  • Datensätze sollen aus der DB in einem Formular angezeigt werden.
  • Der User soll die Datensätze bearbeiten können, das Ergebnis muss zurückgeschrieben werden.
  • Der User soll außerdem mit einem neuen Formular weitere Einzelheiten zu einem Datensatz angezeigt bekommen.
  • Eingaben sollen nicht direkt in einem Feld erfolgen (sonst könnte ich einfach ein entsprechendes Steuerelement mit der DB binden), sondern wieder über ein Formular, das den Datensatz optisch ansprechend anzeigt.

Da stehe ich nun voll auf dem Schlauch, denn in Excel ist ja ein Leichtes, Datensätze anzeigen zu lassen und Rechtsklich-Ereignisse etc zu definieren.

Wie kann ich in C# vorgehen? Es gibt soviele verschiedene Möglichkeiten. Ameinfachsten wäre es, die Excel Tabelle in eine Access DB zu importieren und auf diese zuzugreifen. Nur gibt es kaum Literatur zum Thema Access und C# und ich habe bislang nur den Code gefunden, eine Access DB zu öffnen und eine Schleife über Datensätze. Aber wie kann ich diese in einem Formular anzeigen lassen, wie kann Änderungen zurückschreiben, wie kann ich einen Rechtsklich Ereignis auf einen Datensatz realisieren etc etc.

Bin für alles dankbar, was ihr mir schreibt.

371 Beiträge seit 2008
vor 12 Jahren

Hallo nfb503,

was du machen moechtest wird als CRUD bezeichnet.
Hier ein keines Bsp. mit XML und WPF.

http://www.dotnetspark.com/kb/1704-crud-operation-on-xml-db-wpf-application.aspx

Gruesse,
Manullino

L
667 Beiträge seit 2004
vor 12 Jahren

Wenn Du schon Access benutzt, lad Dir Deine Datensätze in ein Dataset und Weise das Dataset einem Datagrid Control zu. Schon bekommst Du die Datensätze angezeigt.

Zum Zugriff auf eine Access-Datenbank solltest Du mal nach ADO.NET googeln, da gibt es massig Tutorials. Im Übrigen wird der DB-Zugriff über ADO standardisiert, so dass Du je nachdem ob Du Access, SQL oder was auch immer verwendest, meist nur noch den ConnectionString entsprechend anpassen musst.

"It is not wise to be wise" - Sun Tzu

N
nfb503 Themenstarter:in
20 Beiträge seit 2012
vor 12 Jahren

Hallo,

Version Access gefällt mir für den Anfang besser, XAML ist noch etwas zu hoch für mich, befürchte ich.

Kannst du mir Beispiele oder einen Link zu einem Beispielcode geben, denn ehrlich gesagt verstehe ich nur Bahnhof(Dataset, Datagrid Control). Ich wäre ja schon zufrieden, wenn ich die Datensätze, die ich ermittele, irgendwo anzeigen lassen könnte. Das ist alles, was ich bislang habe. Da kann ich nur lesen (nicht zurückschreiben) und ich kann es auch nicht anzeigen lassen.

Wenn ich noch eine where Klausel einfüge, sollte jeder Datensatz irgendwo erscheinen.

 class Access
        {
        public void Csharp_Access_Datenbank()
            {
            OleDbConnection con = new OleDbConnection(
               @"Provider=Microsoft.Jet.OLEDB.4.0;
                Data Source=P:\Orientation.mdb");
            con.Open();

            string strSQL = "SELECT * FROM data1";

            OleDbCommand cmd = new OleDbCommand(strSQL, con);
            OleDbDataReader dr = cmd.ExecuteReader();            

            //dr ist die Zeile, der Wert in spitzen Klammern die Spalte!
            while (dr.Read())
                {
                //MessageBox.Show(dr[1].ToString());                
                }
            dr.Close();             
            con.Close();
            }
        }
L
667 Beiträge seit 2004
vor 12 Jahren

Ist ja klar, dass Du nur Bahnhof verstehst, der Klassenname sagt ja auch nicht aus, wie man damit arbeiten musst. Hast Du denn mal nach den genannten Stichworten gesucht ? Oder willst Du jetzt eine fertige Lösung haben ?

"It is not wise to be wise" - Sun Tzu

3.825 Beiträge seit 2006
vor 12 Jahren

Hallo nfb503,

da gibt es viele Möglichkeiten.

Schau Dir erstmal die Grundlagen an im Openbook Visual C# (Link links bei Resourcen) und in meinem kleinen Text (Link in Signatur).

Dann vielleicht noch Lightswitch : http://www.microsoft.com/germany/visualstudio/products/lightswitch/default.aspx

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

Hinweis von Abt vor 12 Jahren

Da Signaturen für nicht angemeldete Gäste nicht sichtbar sind; Bernd meinte:
Workshop: Datenbanken mit ADO.NET

N
nfb503 Themenstarter:in
20 Beiträge seit 2012
vor 12 Jahren

Vielen Dank für die Links. Das ist auch in meinem Buch ausführlich beschrieben, aber nicht wie man das schön anzeigen und bearbeiten kann.
Mein Problem ist weniger auf die Datenbank zuzugreifen als die Inhalte darzustellen und Interaktion mit dem User zu ermöglichen.

Die Beispieldatei bzgl xaml war doch sehr gut, ich versuche anhand dessen mich einzuarbeiten.
Jetzt habe ich hier einen DataGrid, dort werden alle Datensätze aufgelistet. Nun würde ich gerne bei Doppelklick darauf etwas in die DB zurückschreiben. Und hier hapert es.

Wie kann ich bei einem DataGrid die Elemente eines ausgewählten Datensatzes ermitteln? Es wird ja z.B pro Datensatz angezeigt: Name, Nummer, ID.
Klicke ich nun doppelt auf einen Datensatz, möchte ich von diesem den Namen ermitteln. So etwas wie DataGrid.Value oder so gibt es nämlich nicht.

Kann mir hierbei jemand helfen?