[C Sharp] Access- Datenbanken

zokker13

Moderator
Joined
Oct 12, 2008
Messages
6,719
Points
235
Moin moin,

zur Zeit haben wir in der Schule das Thema Datenbanken.
Wir haben eine menge neuer Befehle gelernt aber hängen alle irgendwie fest.

Unsere Lehrerin arbeitet offensichtlich gegen mich, nachdem ich sie auf einen Syntaxfehler in einem Arbeitsblatt hingewiesen hat und sie das nicht eingesehen hat.

Wie dem auch sei, wir sollen eine Access- Datenbank in einer Form einbinden.
Die Schritte, die wir dabei vornehmen;
Verbindung herstellen
Daten anzeigen
Daten verändern und updaten

Ich hänge, wie bereits erwähnt, an dem Updaten- part fest.


Da das Internet nichts wirklich ausspuckte und meine Lehrerin mich seit Neustem hasst, frag ich euch! =)

Für den Updaten- Command benutzen wir den Commandbuilder.


Code:

C#:
///Datenaknzugiff mit Csharp
///Vom Tusch Viel Spaß und sow
///Version 0.0000000000a :D
///
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb; //Einbinden einer Klasse 'OleDb' für Access
using System.Data.Sql; //<= Beispiel für die Syntaxe für SQL Datenbanken

namespace Datenbankzugriff
{
    public partial class Form1 : Form
    {
        /*Erstellung des Datasets (um die DB in den RAM zu schreiben)
         * und des Adapters (um die Daten in das Datagridview zu schreiben*/
        DataSet dsDaten = new DataSet();
        OleDbDataAdapter daAdapter;


        public Form1()
        {
            InitializeComponent();
        }
        string strconStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Videothek.mdb"; //Pfad zur Datenbank
        string strselect = "Select Name from Genre"; //selectierung der Tabellennamen as einer Tabelle der Wahl

        
        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void cmdVerbindung_Click(object sender, EventArgs e)
        {
            OleDbConnection dcCon = new OleDbConnection(strconStr); /*Verkuppelt die Datenbankverbindung mit dem String*/

            /*Zuweisung der Variablen*/
            daAdapter = new OleDbDataAdapter(strselect, dcCon);

                        dsDaten = new DataSet();

            try
            {
                dcCon.Open(); //Öffnet die Verbindung zur DB
                daAdapter.Fill(dsDaten, "Name"); //'Name' => Überschrift von der jeweiligen Tabelle :: Füllt den Ram mit der DB
                dcCon.Close(); //Schließt die Verbindung zur DB wieder
                MessageBox.Show("Daten übertragen");

            }
            catch
            {
                MessageBox.Show("Fehler");
            }
        }

        private void cmdDaten_Click(object sender, EventArgs e)
        {

            DataTable dtDaten = dsDaten.Tables["Name"]; //'Name' => Überschrift von der jeweiligen Tabelle

            /*Der folgende Part ist nur für
             * die Listbox, relativ unwichtig, 
             * da unübersichtlich
             * */
            lstTabellen.Items.Clear(); /*Leert die Listbox, damit sich nichts ansammelt
                                   * beim weiteren Betätigen von den Button*/

            foreach (DataRow drReihe in dtDaten.Rows)
            {
                lstTabellen.Items.Add(drReihe["Name"]); //'Name' => Überschrift von der jeweiligen Tabelle
            }

            /*Schreibt die Daten aus dem RAM in das DataGridView rein*/
           dgvView.DataSource = dtDaten;
            
        }

        private void cmdAktualisieren_Click(object sender, EventArgs e)
        {
            OleDbCommandBuilder cmB = new OleDbCommandBuilder(daAdapter);
            OleDbConnection dcCon = new OleDbConnection(strconStr); /*Verkuppelt die Datenbankverbindung mit dem String*/

            dsDaten = new DataSet();

            dcCon.Open();
            daAdapter.Update(dsDaten, "Genre");
            dcCon.Close();


           /* leert die Listboxen
            dgvView.DataSource = "";
            lstTabellen.Items.Clear();
            MessageBox.Show("Aktualisiert!");*/
        }
    }
}


Wenn man den Code compilert, erscheint der Fehler: "Update: TableMapping['Genre'] oder DataTable 'Genre' kann nicht gefunden werden.
Ich weiß nicht wo der Fehler ist und hoffe, dass ihr mir helfen koennt.

Mitf freundlichen Grüßen

Phil
 

Attachments

  • 036 Datenbankzugriff.rar
    94.9 KB · Views: 3
Mhhh also csharp keine ahnung, aber beim schnellen drüber schauen. Du legst im Speicher mit
daAdapter.Fill(dsDaten, "Name");
Die Spalte "Name" an und willst dann später mit
daAdapter.Update(dsDaten, "Genre");
die Spalte "Genre" updaten, die es dann ja garnicht geben dürfte oder :?
 
Mhhh also csharp keine ahnung, aber beim schnellen drüber schauen. Du legst im Speicher mit Die Spalte "Name" an und willst dann später mit die Spalte "Genre" updaten, die es dann ja garnicht geben dürfte oder :?
Genre und Name sind doch tabellen? ansonsten sehen wir es ja ähnlich.

des weiteren fiel mir gerade auf, dass die initialisierung "dsDaten = new DataSet();" 2mal vorkommt.
 
oh hab ich spalte geschrieben :z

Also egal welche Sprache. Prinzipiell muss man öffnen was man befüllen will, wahrscheinlich kommt daher die Fehlermeldung, da laut Quelltext, so wie es verstehe, die Tabelle "Name" im Speicher erstellt wird und mit den Daten aus "Genre" (Spaltenname "Name") befüllt wird. Später soll aber die Tabelle "Genre" mit den Daten aus "Genre" geupdatet werden.
 
Wenigstens mal ne Rückmeldung könntest du geben, was nun das Problem ist/war.
 
Back
Top Bottom