Forum: PC-Programmierung Frage zu Datenbankanwendung in C#


von Arayi (Gast)


Lesenswert?

Hey,

ich habe eine kleine Datenbankanwendung geschrieben, die den 
MySQL-Connector (C#) benutzt. Dort habe ich allerdings ein paar kleine 
Umsetzungsprobleme und zudem aucb bestimmt vieles, was 
verbesserungswürdig ist, von daher hier mal ein paar Fragen.

1. Ich habe eine einzige Klasse, die die Datenbankoperationen darstellt, 
also Löschen von Kunden, Hinzufügen usw., vermutlich könnte man das 
ganze noch besser aufteilen aber wie?
2. Ich habe in dieser einen Klasse, die übrigens statisch ist eine 
Verbindung, die überall genutzt wird und zudem ein paar andere. Ist es 
empfehlenswert eine Verbindung in der Klasse zu haben, die überall 
genutzt wird?
Das sieht so aus:

private static MySqlConnection sql_connection = new MySqlConnection();
private static MySqlCommand sql_command = new MySqlCommand();
private static MySqlDataReader sql_reader;

static Database()
{
    sql_connection.ConnectionString = Login();
    sql_command.Connection = sql_connection;
}

Jetzt ist muss man natürlich auch immer sql_connection.Open() machen. 
Könnte man die Offene Verbindung auch irgendwie übergeben bzw. ist das 
ratsam?

So sieht dann z.B eine der Methoden aus:
public static bool DeleteAllData()
{
    sql_command.CommandText = "Delete from Kunde;";

    try
    {
        using (sql_connection)
        {
            sql_connection.Open();
            sql_command.ExecuteNonQuery();
        }
    }
    catch (MySqlException mysqlex)
    {
        // Behandlung
        return false;
    }
    return true;
}

3. Zudem habe ich auch keine interne Repräsentation eines Kunden in 
meinem Projekt, sondern nur in der DB eine Tabelle einen Kunden. Brauche 
ich eine eigene Klasse dafür in meinem Projekt, wenn ja wie könnte diese 
aussehen?


Ich würde mir auch wahnsinning gerne mal irgendwo fertige Projekte 
angucken, allerdings sind viele dieser Open-Source Projekte so 
gigantisch und auch so komplex das ich fast nichts verstehe.
Hat hier evtl. jemand eine Empfehlung für ein kleineres Projekt, wo man 
sich auch mal einen guten Stil angucken kann oder eine Seite, wo es 
solche Projekte gibt?
Diese müssen auch nicht unbedingt eine Datenbankanwendung sein. ;)
Nur ein guter Stil ist mir wichtig.

Danke schon einmal im voraus an alle Antwortenden.

von Max M. (max_m75)


Lesenswert?

Hi,

mit welcher IDE arbeitest du?
Ich arbeite zur Zeit mit VisualStudio und setze das was du beschreibst 
durch das "Entity Framework" um. Einfach über nugetManager hinzufügen.

Damit kannst du ein Entity Model direkt aus der Datenbank kreieren 
lassen.
D.h. es wird eine Klasse "Kunde" erzeugt mit allen Attributen die durch 
die Datenbank repräsentiert wird.
Auch wird ein DataContext erzeugt über diesen du dann Add/Update/Delete 
dieser Entities vornehmen kannst.

Am besten legst du für jede Entity Klasse noch eine EntityDAO 
(DatanaseAccessObject) Klasse an über die du dann alle Datenbank 
zugriffe führst --> Bessere Übersichtlichkeit als alles in eine 
"Database.cs" zu packen.
mfg
Max

von Arayi (Gast)


Lesenswert?

Hey,

ich arbeite ebenfalls mti dem Visual Studio (2012). Das gefällt mir 
einfach am besten. ;)

Ich verstehe nicht, warum man überhaupt eine interne Repräsentation 
eines Kunden in einem Projekt braucht. Wieso lässt man das ganze nicht 
einfach in der Datenbank?

Ich habe mir das Entity Framework auch mal heruntergeladen aber ich 
kriege dann, wenn ich ein neues ADO.NET Entity Data Model erstellen will 
keine MySQL Database als Auswahlmöglichkeit, sondern nur Microsoft SQL 
Server, Microsoft Server-Datenbankdatei und Microsoft SQL Server 4.0 
Compact.
Somit kann ich auch kann Model davon erstellen.

Das mit dem EntityDAO (DatanaseAccessObject) verstehe ich auch noch 
nicht ganz. (Du meintest auch über DatabaseAccessObject oder? ;) )
Was meinst du mit für jede Entity Klasse? Wird dann nicht nur für den 
Kunden eine Entity erstellt? Kannst du oder jemand anders das noch 
einmal genauer erläutern?

von Arayi (Gast)


Lesenswert?

Hat keiner eine Ahnung von diesem Entity Framework? Wenn jemand sonst 
noch einen Vorschlag hat, wäre das auch okay. Es muss ja warscheinlich 
auch nicht unbedingt dieses Entity Framework sein oder wird das 
normalerweise verwendet?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.