Zum Inhalt springen

C# Datenbankanbindung OleDB


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich habe seit kurzem mit C# angefangen und hab natürlich jetzt ein kleines Problem bei dem mir auch stundenlange Online Recherche nichts brachte.;)

Ich habe eine winziges Programm, mit dem ich die Möglichkeit eine .mdb Datenbank zu nutzen auskundschaften will.

Hier erstmal der Code:


namespace Datenbank_test

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e)

        {


        }


        private void button1_Click(object sender, EventArgs e)

        {

            OleDbConnection con = new OleDbConnection();

            con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=C:\\test.mdb";

            con.Open();

            OleDbCommand abfrage = new OleDbCommand();

            abfrage.CommandText = "SELECT * FROM inlist";

            abfrage.Connection = con;

            string datensatz = Convert.ToString(abfrage.ExecuteNonQuery());

            con.Close(); 

        }

    }

}

Die Variable datensatz enthält aber nie die Anzahl der Datensätze sondern immer 0. Ich habe erst vorhin gerafft, dass ich durch ExecuteNonQuery nur die Anzahl nicht den Inhalt der Spalten bekomme.

Deshalb:

1. Warum krieg ich immer 0 Datensätze raus? Entsprechende Tabelle enthält 5 Datensätze

2. Wie kann ich nicht die Anzahl sondern den Inhalt anzeigen lassen?

Ich hoffe das ihr mir weiterhelfen könnt, ich häng das fest. :)

MFG Attix

Geschrieben
Hallo zusammen,

ich habe seit kurzem mit C# angefangen und hab natürlich jetzt ein kleines Problem bei dem mir auch stundenlange Online Recherche nichts brachte.;)

Ich habe eine winziges Programm, mit dem ich die Möglichkeit eine .mdb Datenbank zu nutzen auskundschaften will.

Hier erstmal der Code:

...

Die Variable datensatz enthält aber nie die Anzahl der Datensätze sondern immer 0. Ich habe erst vorhin gerafft, dass ich durch ExecuteNonQuery nur die Anzahl nicht den Inhalt der Spalten bekomme.

Deshalb:

1. Warum krieg ich immer 0 Datensätze raus? Entsprechende Tabelle enthält 5 Datensätze

2. Wie kann ich nicht die Anzahl sondern den Inhalt anzeigen lassen?

Ich hoffe das ihr mir weiterhelfen könnt, ich häng das fest. :)

MFG Attix

ExecuteNonQuery liefert eine DataReader Objekt zurück. Dieses muss dann durchlaufen werden. Dann kommst Du auch an die Daten.

Das die Onlinerecherche nichts bringt, halte ich für ein Gerücht. Wenn man ordentliche Suchbegriffe eingibt, erhält man mehr als ein Resultat.

Geschrieben

abfrage.ExecuteNonQuery()

gibt einen int Wert zurück, der die Anzahl an betroffenen Datensätzen liefert.

abfrage.CommandText = "SELECT * FROM inlist";

Selektiert nur Datensetzte verändert diese aber nicht.

Lösung:


            abfrage.CommandText = "SELECT * FROM inlist";

            abfrage.Connection = con;

            using (IDataReader reader = abfrage.ExecuteReader())

            {

                int anzahlZeilen = 0;

                while (reader.Read())

                {

                    anzahlZeilen++;

                    String wertSpalte1 = reader[0].ToString();

                    int zahlInSpalteMitNamenXY = Convert.ToInt32(reader["XY"]);

                    int anzahlSpalten = reader.Depth;

                }

            }

            con.Close();

Desweiteren würde ich Dir folgende Microsoft Biliothek empfehlen:

Enterprise Library

Eine Komponente davon heisst "Data Application Block".

Nach der Installation sind die Dlls im GAC registriert und du kannst Sie als .Net Verweis deinem Projekt hinzufügen und dann benutzen. Die nötigen Dlls werden dann in das Ausgabeverzeichnis kopiert und du musst die Library nicht auf dem Zielrechner der Anwendung installieren.

Vorteil:

  • Abtraktion der Datenbankzugriffe erlaubt einheitlichen Umgang mit verschieden Datenquellen.
  • Du kannst einfach auf DataSets zugreifen und diese dann auch bequem als DataContext bei Steuerelementen einrichten.
  • einfach schreibweise.
  • Las but not least kannste die Verbindungszeichenfolge für ConnectionStrings in der App.config hinterlegen und so, gerade bei *.mdb Datenquellen den Speicherort ändern ohne was im QuellCode zu ändern.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...