Zum Inhalt springen

C# Anwendung mit Access 2003 Datenbank


Empfohlene Beiträge

Geschrieben

Hallo ihr Fachinformatiker ;-)

Ich programmiere mir gerade eine C#-Anwendung mit Visual C# 2005 Express, die mit einer Access 2003 Datenbank kommunizieren soll. (Mein System: Win7 Professional x64)

Habe den Code eigentlich auch schon soweit fertig, bekomme jedoch eine Meldung „Adressbuch funktioniert nicht mehr“.

Vielleicht kann mir jemand helfen…

Klasse cDatenbank:


using System;

using System.Collections.Generic;

using System.Text;

using System.Data.OleDb;

using System.Windows.Forms;


namespace Adressbuch

{

    class cDatenbank

    {

        // Attribute

        public OleDbConnection Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Luk\Documents\Visual Studio 2005\Projects\Adressbuch\ZAM.mdb");


        // Methoden

        public void SQLRead(string Query)

        {

            Connection.Open();


            OleDbCommand Command = new OleDbCommand(Query, Connection);

            OleDbDataReader Reader = Command.ExecuteReader();


            while (Reader.Read())

            {

                MessageBox.Show(Reader[0].ToString());

            }


            Reader.Close();

            Connection.Close();

        }

    }

}

Form1.cs:

...

cDatenbank Access = new cDatenbank();

...

Access.SQLRead("SELECT VNAMECALL FROM kontakte");

Datei ist vorhanden, Abfrage korrekt, 1 Zeile vorhanden!

Sieht jemand einen Fehler?

Vielen Dank schonmal im voraus!

Gruß, Luk

Geschrieben

Auch wenn ich mich langsam bei regelmäßigen Lesern des .NET Berieches wegen "Reposts" enbeliebt mache, empfehle ich Dir dringend die Enterprise Library runter zu laden .... das ist ne .Net Erweiterung Die sehr viele Funktionen bietet .... unter anderm einen Data Access Bereich der sich um Simplifizierzung von speziffischen Datenbanken kümmert. Für Dich als Entwickler heisst das:

- Enterprise Library Assemblys im Projekt registrieren, die Du brauchst

- den Code schreiben .... dieser ist sehr mächtig und trotzdem intuitiv zugänglich

- falls noch nicht vorhanden eine App.Config (Projektmappenverzeichnis ... Projekt XY rechtsclicken ... Hinzufügen ... Anwendungs-Konfigurationsdatei) erstellen.

- mittels dem, durch die Installtion der Enterprise Library hinzugefügten, VS Add-In der App.config alle in deinem Projekt verwendente Verbindungszeichenfolgen hinzufügen.... und im Code dann mittels


// DatabaseFactory ist statisch und mit der Ent. Lib gekommen

// der Parameter für Create Database ist vom Tyo String und muss nur den Namen

// beinhalten unter dem die Verbindungszeichenfolge in der App.config registriert ist

Database db = DatabaseFactory.CreateDatabase("MeinDBConStringNameInDerAppConfig");

eine Datenbank Verbding aufbauen..... ob da jetzt jetzt ein Access-, SQL-, Oracle- oder sont ein Verbindungsfolgen-String für eine ereichbare Datenbank steht interessiert die statische Methode von "DatabaseFactory" gar nicht ... Factory-Pattern halt.

Die Handhabung ist immer die gleiche.

Der Download und die Verwendung (auch zu komerziellen Zwecken) der Ent. Lib ist UMSONST. Alle benutzten *.dlls müssen unter "Verweise" in dem entsprechenden Projekt angeben werden und werden AUTOMATISCH mit ins Ausgabe Verzeichnis des Projektes kopiert .... somit muss die Bililothek nur auf dem / den Entwicklungs-Rechner/n istalliert werden ... der Benutzer der Anwendung kriegt davon gar nix mit. Viele Firmen modifizieren die Ent. Lib. mitterweile sogar und rollen diese als Standart Bib. für deren Projekte bei den Kunden aus. Das geht weil der Quell Text von der Ent. Lib im download Paket von *** vorhanden ist und weil Du für Deinen Code eine bestimmte Version der *.dll Laden kannst .... Wenn das unternehmen "Trottel Meyer und Horst AG." also den absoluten Bullschit programmiert und Ihre Modifizierte Version der Ent. Lib auf deinem Kunden Rechnern ausrollte, interessiert das Deine Anwendung gat nicht.

Einfacher Datenbank Verbindungen herstellen geht echt nix.

Noch die Links ... diesmal am Schluss der Post:

Enterpriese Library (Ent. Lib) (Beschreibung)

Enterpriese Library (Ent. Lib) (download)

DataAcces Application Block (Ent Lib 2.0 basiertes Beispiel zum Lesen aus DB .... das geht mittels dem IReader Interface aus dem normalen .Net Framework einfacher ... er will aber zeigen wie man sogar StoredProcedures aus der DB nutzt ... SQL beispiel bis auf Verb.-Zeichenfolge aber das gleiche für Oracle oder so)

Geschrieben

Hey!

Danke erstmal für die Antworten!

Also erstmal zu meinem Code...

Der Fehler kommt schon bei Connection.Open();

(Die Teile darunter habe ich auskommentiert...)

Also liegt es ja nahe, dass mit dem Connection String etwas nicht passt.

Wie ist der überhaupt aufgebaut? Habe ihn nur aus einem Internet Beispiel und habe den Pfad angepasst. Dürfen im Pfad überhaupt Leerzeichen sein?

Daran kann es aber nicht liegen, weil C:\ZAM.mdb hat auch nicht geklappt...

Moin,

1 Zeile bedeutet, dass die While-Schleife einmal durchlaufen wurde?

Und beim zweiten Mal der Abbruch kommt?

Ich verstehe nicht so richtig, was du meinst...:confused:

Die Schleife läuft, so lange Reader Datensätze liefert...

@ Mcolli:

Habe mir die Enterprise Libary mal runtergeladen und nur die Kategorie Data Access intstalliert.

Aber nun meine Frage(n):

- Enterprise Library Assemblys im Projekt registrieren, die Du brauchst

Wie mache ich das? :-o

- falls noch nicht vorhanden eine App.Config (Projektmappenverzeichnis ... Projekt XY rechtsclicken ... Hinzufügen ... Anwendungs-Konfigurationsdatei) erstellen.

Bei mir steht unter hinzufügen nur: Neues Element, Vorhandenes Element, Neuer Ordner, Windows Form, Benutzersteuerelement, Klasse

- mittels dem, durch die Installtion der Enterprise Library hinzugefügten, VS Add-In der App.config alle in deinem Projekt verwendente Verbindungszeichenfolgen hinzufügen.... und im Code dann mittels

Diese Datei habe ich wie gesagt nicht...

Vielen Dank schonmal für eure Hilfe!

Bin übrigens C# Anfänger und verwende auch nur Visual C# 2005 Exrpess...

Geschrieben

Habe gefunden wo ich eine app.config erstellen kann.

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

// DatabaseFactory ist statisch und mit der Ent. Lib gekommen

// der Parameter für Create Database ist vom Tyo String und muss nur den Namen

// beinhalten unter dem die Verbindungszeichenfolge in der App.config registriert ist

Database db = DatabaseFactory.CreateDatabase("MeinDBConStringNameInDerAppConfig");

</configuration>

ist das so OK?

Was mache ich nun mit meinem Connection String?

Das Registrieren der Assemblies habe ich glaub ich auch richtig gemacht...

Als verweise habe ich die Dateien

Microsoft.Practices.EnterpriseLibrary.Data.SqlCe.dll

Microsoft.Practices.EnterpriseLibrary.Data.dll

hinzugefügt und einen Namespace eingetragen:

using Microsoft.Practices.EnterpriseLibrary.Data;

Geschrieben (bearbeitet)

Moin,

auf msdn-online.de kannst Du Dir auch ein paar Webcasts zum Thema "Enterprise Library" anschauen. Eine 7teilige Serie von Christian Weyer ist aus dem Jahr 2005. Die Unterschiede zur 5er Version sollten nicht allzu groß sein. Ansonsten schau Dir auch den Webcast von Dariusz Parys an.

EDIT: Die Enterprise Lib 5 setzt mindestens das .NET 3.5 SP1 voraus.

Bearbeitet von lbm1305
Geschrieben

Also schön dass Du Dein Problem gelöst ... und sry für die Späte Antwort

Zu der Ent.Lib nochmal:

Die 5er Version davon geht nur mit Visual Studio 2010, Windows7 und .NET Framework 4.0.

Du müsstest die 4er Version nehmen .... ich weiss allerdings ob das Probleme mit dem VS Express gibt.... schlimmsten falls kannste die "komfort" Plugins nicht nutzen wie ein Grafischer Editor für die "App.config" die man sonst nur als xml Datei angezeigt bekommt.... also nun zum Handwerklichen

- Enterprise Library Assemblys im Projekt registrieren, die Du brauchst

Wie mache ich das? :-o

-Du öffnest den "Projektmappen Explorer" (Ist standart mäßig auf der rechten Seite angedockt wenn nicht unter "Ansicht" - "Projektmappen Explorer")

- Rechts auf "Verweise" clicken und dann "Verweis hinzufügen" auswählen

- Im folgenden Dialog dann unter dem reiter "NET" die benötigten "Assembly" (auch Verweiss oder DLL genannt) suchen. Die heissen entweder "Enterprise Library BlaBlub Apllication Block" oder "Microsoft Practices.blabla" musste bischen Suchen. Dann Mit ok bestätigen.

- In den Klassen, wo die Verweise dann genutzt werden die "using" Direktive ganz oben benutzen z.B. "using Microsoft.Practices.Data

Zur App.Config:

-Projekt "Element Hinzufügen" und dann "anwendungs Konfigurations Datei auswählen.

- Diese Entweder einfach öffnen um XML Ansicht zu haben oder rechts Click und "Edit with Enterprise Library" sagen

Ich muss jetzt leider zur Arbeit fahren ... Ich hab noch ne Bilder Serie dazu .... Ich werde wenn ich wieder komme mal ein kleines Tutorial dazu schreiben mit Bildern und so

Geschrieben
Also schön dass Du Dein Problem gelöst ... und sry für die Späte Antwort

Zu der Ent.Lib nochmal:

Die 5er Version davon geht nur mit Visual Studio 2010, Windows7 und .NET Framework 4.0.

Wie kommst Du denn darauf? Die 5er Version braucht "nur" .NET3.5 SP1 und kann durchaus mit VS 2008 verwendet werden: System Requirements. Oder meinst Du was anderes?

Eigentlich finde ich es ein bisschen "oversized" mit der EnterpriseLib eine Anwendung zu schreiben, die eine Access Datenbank verwendet.

Geschrieben
Wie kommst Du denn darauf? Die 5er Version braucht "nur" .NET3.5 SP1 und kann durchaus mit VS 2008 verwendet werden: System Requirements. Oder meinst Du was anderes?

Eigentlich finde ich es ein bisschen "oversized" mit der EnterpriseLib eine Anwendung zu schreiben, die eine Access Datenbank verwendet.

Jo da hatttttaaaaaa Recht. Meine Kaffee Maschine ist kaputt ... da kann ich morgens nicht richtig lesen :old

Geschrieben

Hey! Ich hab gleich mal noch eine Frage und stell die mal hier^^

Also, ich habe mir eine Klasse von ListBox angeleitet und von dieser Klasse ein Objekt erstellt.

   

public class ToolTipListBox : ListBox

Diese Klasse zeigt beim überfahren eines Items in der Listbox einen ToolTip.

Jetzt will ich aber, dass der ToolTip eine Variable vom Typ <List> (also nur einen Listpunkz) aus dem Form anzeigt (MainForm).

Habe eine GetMethode erstellt mit der ich aus dem MainForm die <List> Variable zurückgebe.

Nur wie kann ich jetzt in der Klasse ToolTipListBox auf die Get-Methode zugreifen?

Vielen Dank schonmal für eure nette Hilfe^^

LG Luk

  • 2 Wochen später...
Geschrieben

Hey ich hab nochmal eine Frage...

Meine DB-Verbindung habe ich bis jetzt so realisiert:

Form1.cs:


OleDbConnection Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ZAM.mdb");

Nur jetzt habe ich gesehen, dass es auch einen "Assistenten zum Konfigurieren von Datenquellen" gibt... D.h. ich habe meine Access DB jetzt im Projektmappenexplorer integriert. Meine Abfragen habe ich mit dem Connection String immer so gestaltet:
OleDbCommand Command = new OleDbCommand(Query, Connection);

Doch wenn ich jetzt Variable Connection lösche, dann ist dieser Codeteil natürlich hinfällig.

Doch wie mache ich diese Abfrage nun ohne die Variable, nur mit der Datenquelle? Habe bei Google nichts für mich passendes für mich gefunden.

Danke schonmal für eure Hilfe!

Luk

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