Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - View aktualisieren


Christian S. - Fr 06.01.06 18:36
Titel: View aktualisieren
Hallo!

Ich versuche mich gerade (zum ersten) Mal an der Verwendung von Datenbanken in .NET (2.0). Ansich klappt das ja ganz wunderbar, nun stehe ich aber auf dem Schlauch. Ich habe ein View angelegt, um aus einer Tabelle "Languages", welche die Felder ID und Language enthält, die bereits vorhandenen Sprachen abzurufen.

SQL-Anweisung
1:
SELECT DISTINCT language FROM Languages                    

Das Ergebnis zeige ich in einem dataGridView an. Die Daten, die zum Start des Programmes in der Tabelle sind, werden korrekt dort dargestellt.

Leider reagiert dieses überhaupt nicht drauf, wenn ich zur Laufzeit neue Daten in die Tabelle eintrage. Die Anzeige der kompletten Tabelle bestätigt mir, dass die Daten dort aber ankommen.

Wie kann ich eine solche View aktualisieren?

Grüße
Christian

//edit: .NET-Version gesetzt


kiar - Fr 06.01.06 19:30

moin Christian,

wenn du das View nochmal erstellst, sind dann die neuen Daten drin? ich glaube eine View macht nur eine Sicht auf die Daten zum Zeitpunkt der erstellung des Views's.

raik


Christian S. - Fr 06.01.06 19:49

Hi, Raik!

Das werde ich mal ausprobieren. Dazu muss ich mich erst einmal durch den automatisch erstellten Code wühlen um zu sehen, wie das geht. Ist alles noch sehr neu für mich. :-)

Grüße
Christian


UGrohne - Sa 07.01.06 06:48

Um was für eine Datenbank und Zugriffskomponente geht es denn?


Christian S. - Sa 07.01.06 13:42

Verwendet wird der MS SQL Server 2005 (Zugriff auf eine einzelne mdf-Datei). Zugreifen tue ich über ein DataSet, welches für jede Tabelle auf einen TableAdapter zurückgreift. Die Daten gelangen über eine BindingSource an das dataViewGrid.

Ich muss zugeben, dass das VS mir das alles angelegt hat und ich erst eine Ahnung habe, wozu das gut ist. Hier noch die Methode, welche eine neue Zeile einfügt:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
            filmeDataSet.NamesRow nr = filmeDataSet.Names.NewNamesRow();
            nr.name = tb_name.Text;
            filmeDataSet.Names.AddNamesRow(nr);
            filmeDataSet.Names.AcceptChanges();

            filmeDataSet.LanguagesRow lr = filmeDataSet.Languages.NewLanguagesRow();
            lr.id = nr.id;
            lr.language = cb_language.Text;            

            filmeDataSet.Languages.AddLanguagesRow(lr);
            filmeDataSet.Languages.AcceptChanges();


bis11 - Sa 04.02.06 14:19

Hi,

ich habe das Problem des Aktualisierens so gelöst :


C#-Quelltext
1:
2:
3:
this.dataSetSelectHardware.Clear();
this.oleDbDataHardwareExistence.Fill(this.dataSetSelectHardware,"Hardwarebestand");      
this.bindManagerHardware=this.BindingContext[this.dataSetSelectHardware, "Hardwarebestand"];


Dazu wird ein DataSet, DataAdapter und der BindManager gebraucht. Dieses habe ich dann in eine Funktion gesteckt und diese Rufe ich dann auf, wenn ich eine Aktualisierung brauche. Wobei "Hardwarebestand" der Tabellenname ist.