Laden...

Datenbankabfrage. Wie ich es mache und wie es richtig ist ?

Erstellt von subsauber vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.683 Views
Thema geschlossen
S
subsauber Themenstarter:in
11 Beiträge seit 2014
vor 9 Jahren
Datenbankabfrage. Wie ich es mache und wie es richtig ist ?

verwendetes Datenbanksystem: Microsoft Access
Hallo Leute,
wie oben schon beschrieben benutze ich das Datenbanksystem Microsoft access.
Nun habe ich ein kleines Projket gestartet bei dem ich auf meine Microsoft Acces Datenbank zugreifen muss.
Bisher habe ich es so gemacht das ich eine verbindung über die Microsoft Access befehle aufgebaut habe (diese ist nicht im Projekt integriert sondern läuft über einen Pfad, nicht sehr optimal ?) und mir etliche Funktionen zur Abfrage von Werten geschrieben habe, diese wurden bisher immer in einen Datareader reingeschrieben und zurückgegeben.
Soweit bin auch eigentlich gut klar gekommen, nur habe ich mich in letzter Zeit ein wenig Informiert und festgestellt das meine vorgehensweise nicht sehr Optimal ist.
Habe viel über Datasets gelesen und das die Daten meist darüber abgefragt wurde und man eine Abfrage nie direkt an die Datenbank machen sollte sonder irgendwie über das Dataset. So genau habe ich das nicht verstanden und ich muss dazu sagen ich bin auch kein "Experte" auf dem Gebiet.

Meine Frage ist jetzt wie geht es richtig, oder ist alles wie ich es bisher gemacht habe auch okay ?
benutzt man Datasets für die Datenbank abfrage und wenn ja, wie ?

Würde mich über Zahlreiche Antworten sehr freuen 😉

F
10.010 Beiträge seit 2004
vor 9 Jahren

Habe viel über Datasets gelesen und das die Daten meist darüber abgefragt wurde und man eine Abfrage nie direkt an die Datenbank machen sollte sonder irgendwie über das Dataset

Da hast du entweder eine vollkommen falsche Beschreibung gelesen oder es falsch verstanden.

Man sollte aus Datenbanken immer nur exact so viele Daten auslesen wie man wirklich zur Bearbeitung der Aufgabe benötigt.
Nur wenn es eine besonders langsame oder teure Verbindungist sollte man mehr Daten cachen, was man aber eher über offline Synchronisation macht.

Wenn du aber beschreibst das du den DataReader benutzt heist das meist auch das du Daten in UI Elemente frickelst, was man auf jeden Fall vermeiden sollte.

Auch das Updaten der Daten geht per DataTable und DataAdapter einfacher als von hand.

Wo hast du denn das mit dem DataSet gelesen?

3.825 Beiträge seit 2006
vor 9 Jahren

Hallo subsauber,

verwendetes Datenbanksystem: Microsoft Access

Das ist schonmal nicht optimal, da veraltet.

Nimm lieber SQL Compact oder SQL Express.

Hier eine kurze Einführung : Datenbanken mit ADO.NET

Grüße Bernd

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

P
660 Beiträge seit 2008
vor 9 Jahren

Wenn die Datenbank nur von einem User Verwendet wird dann kannst du auch SQLite verwenden.

Wenn es eine Multi-User Anwendung ist, dann verwende wie vorgeschlagen einen SQL-Server oder
etwas anderes vergleichbares deiner Wahl.

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

S
subsauber Themenstarter:in
11 Beiträge seit 2014
vor 9 Jahren

Als ich geschrieben habe das ich Microsoft Access benutze meinte ich die neuste Version als Microsoft Access 2014.

würdet ihr trotzdem empfehlen auf SQL Compact oder auf andere SQL Datenbanken zu wechseln und wenn ja wieso ? Microsoft Acess 2014 ist ja nicht veraltet oder ?

Also so habe ich bisher meine Datensätze ausgefragt.


//gibt Datensätze zurück, wo ein bestimmtes Attribut gleich einem bestimmten Wert ist
public OleDbDataReader GetDatensatz(string p_TabellenName, string p_IDAttribut, string p_IDWert) // bei überladung einschränkung der auszulesenden informationen
        {
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM " + p_TabellenName + " where " + p_IDAttribut + " = '" + p_IDWert + "'", m_Connection);
            OleDbDataReader dr = cmd.ExecuteReader();
            return dr;
        }


    public OleDbDataReader ExtractTabelle(string p_TabellenName)
        {
         
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM " + p_TabellenName, m_Connection);
            OleDbDataReader dr = cmd.ExecuteReader();
            return dr;
        }

Wenn ich das dann in einem DataAdapter speicher muss ich dann DataTabels oder DataSets benutzen um Werte auszugeben ?

Wenn du aber beschreibst das du den DataReader benutzt heist das meist auch das du Daten in UI Elemente frickelst, was man auf jeden Fall vermeiden sollte.

Wie meinst du das ?

und kann mir jemand erklären wieso man immer erst diese ' anführungszeichen setzt und dann diese " ? Wie beispielsweise hier ....'" + p_IDWert + "'".... (erstes beispiel...)

5.657 Beiträge seit 2006
vor 9 Jahren

Hi subsauber,

Access ist ein Office-Programm und keine Datenbank. Die Gründe, warum Access kein (lokales) Datenbanksystem ersetzen kann, wurden im Forum schon oft genug diskutiert.

Was die Anführungszeicen bedeuten, sollte klar sein, wenn man weiß, wie ein SQL-Befehl aussieht. Wertangaben wie Zeichenketten werden dort eben in Anführungszeichen geschrieben, aber das ist Grundlagenwissen, das man sich selbst(!) aneignen muß, wenn man sich mit SQL beschäftigen will.

Du kannst auch den Debugger verwenden um nachzuvollziehen, was dein Code eigentlich macht: [Artikel] Debugger: Wie verwende ich den von Visual Studio?.

Ganz davon abgesehen ist diese Art und Weise, SQL-Befehle aus Strings zu verketten, fehleranfällig und unsicher. Wie man es richtig macht, kannst du hier nachlesen: [Artikelserie] SQL: Parameter von Befehlen.

Zur allgemeinen Vorgehensweise hat ja BerndFfm bereits einen Link gepostet, deine ursprüngliche Frage ist also beantwortet. Außerdem gibt es im Forum Internet viele Beiträge zu dem Thema, so daß wir es hier nicht noch einmal von vorne beginnen müssen.

Daher schließe ich diesen Beitrag unter Verweis auf [Hinweis] Wie poste ich richtig? (Grundlagen, Eigeninitiative).

Christian

Weeks of programming can save you hours of planning

Thema geschlossen