Zum Inhalt springen

C# Datenbankanbindung OleDB


attix

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...