Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Datenbankabfrage. Wie ich es mache und wie es richtig ist ?
subsauber
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

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

beantworten | zitieren | melden

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 ;)
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10084

beantworten | zitieren | melden

Zitat
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?
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3790
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Hallo subsauber,
Zitat von 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
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 691
Herkunft: NRW

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
subsauber
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

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 ?
Zitat
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...)
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von subsauber am .
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5991
Herkunft: Leipzig

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers