Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Datenbank verknüfen
hanspeterpeterhans - Do 19.11.09 11:25
Titel: Datenbank verknüfen
Hi Leute
Bin nicht sehr gut im C#, ich muss es als pflichtfreifach belegen aber habe eine Frage:
Ich möchte ein dvd verwaltungsprogramm machen und nun ste ich bisschen an. Ich habe eine form wo ich die Filme erfasse und eine andere auf der es die Filme in einer Access DB anzeigt.
Jetzt weiss ich aber hinten und vorne nicht wie ich das anstellen soll.
Ich habe mal probiert die TExtBoxen mit -> Databindings -> Erweitert und so halt die einzelnen Felder der DB den Textboxen zu verknüfen.
Ist das schonmal richtig so?
Wäre echt froh um Hilfe
Gruss
JüTho - Do 19.11.09 13:18
Hallo Hans,
nein, dein Vorgehen ist ziemlich ungeeignet. Du musst die einzelnen Teile trennen.
* Access enthält die
Daten auf der Festplatte.
* Eine
DataTable (oder auch mehrere in einem DataSet) repräsentieren die
Daten im Arbeitsspeicher.
*
OleDbConnection und
OleDbDataAdapter stellen die
Verbindung zwischen beidem her: Mit OleDbDataAdapter.
Fill und einem passenden SELECT-Befehl werden die Daten in die DataTable geholt. Achtung: Die Connection soll nur während dieser Maßnahme gültig sein; deshalb gehört sie in einen using-Block.
* Die TextBoxen oder DataGridView oder was auch immer werden per
DataBinding oder DataSource an die DataTable (!) gebunden.
* Änderungen in den Controls werden
automatisch beim Wechsel eines Datensatzes in die DataTable übernommen. Allenfalls ist vor dem Speichern noch EndEdit aufzurufen.
* Änderungen aus der DataTable werden über einen neuen (!) OleDbDataAdapter und Connection per Update in die DB übertragen. Die benötigten SQL-Befehle kann man manuell eintragen, oder man bekommt sie aus einem SELECT-Befehl durch einen CommandBuilder.
Diese kurze Skizze kannst du ausführlich nachlesen z.B. in
OpenBook Kap. 25 ff. [
http://openbook.galileocomputing.de/visual_csharp/index.htm] Anstelle der dort verwendeten Sql-Klassen musst du alles auf Oledb übersetzen; Parameter werden mit '?' markiert - siehe dazu
[Artikelserie] Parameter von SQL Befehlen [
http://www.mycsharp.de/wbb2/thread.php?threadid=66704].
Du siehst, dass du dir ein sehr komplexes Thema vorgenommen hast. Viel Erfolg!
Jürgen
hanspeterpeterhans - Do 19.11.09 21:04
Hei danke
Werd ich mir mal ansehen
kleine frage. ich hatte mal was mit VB zu tun und nun kann ich mir da vielleicht was abgucken. was ist in c# das was ich in VB mit ME. dwdjwduw gemcht habe, also das ME?
Danke und gruss
Es zeigt mir immer einen Fehler an hier:
filmeBindingSource.EndEdit();
filmeTableAdapter.Update(FilmeDatenbankDataSet);
Close();
möchte meine einträge aktualisieren
JüTho - Fr 20.11.09 10:10
hanspeterpeterhans hat folgendes geschrieben : |
kleine frage. ich hatte mal was mit VB zu tun und nun kann ich mir da vielleicht was abgucken. was ist in c# das was ich in VB mit ME. |
Wenn du "Me" meinst, da gibt es nichts Vergleichbares. In manchen Situationen kann man "this" verwenden, nämlich als Bezug auf die aktuelle Klasse; aber den Bezug auf die aktuelle Arbeitsumgebung usw. gibt es nichts.
"dwdjwduw" ist ein ganz schlechtes Beispiel, das kennt niemand. Also kann niemand verstehen, was du in Verbindung mit ME meinst.
Und das ist jetzt ein Intelligenztest für uns: Wir sollen Art, Inhalt und Umfang des Fehler feststellen? Compiler oder Laufzeit? Welcher Fehler? Welche Stelle genau?
Ich ärgere mich: Ich wollte dir davon abraten, mit TableAdapter zu arbeiten, weil dabei der Designer viele Maßnahmen versteckt. Nun ist es passiert...
Gruß Jürgen
PS.
Code sollte als solcher markiert werden (auch bei nur einer Zeile): Beitrag mit dem Schere-Button nochmals öffnen, Code-Text markieren, "Bereiche" öffnen, C# auswählen, Plus-Button, "Absenden". Bitte erledige das noch!
hanspeterpeterhans - Sa 21.11.09 13:34
jo ich uss es jetzt anders machen.
ich habe nurnoch ein problem. ich will auf den button speichern klicken dass dann die tabelle im c sharp auf die access db übertragen will. muss doch nur 1 2 zeilen code sein aber in c# bring ichs ned hin.
wie geht denn das? Danke vielmal
JüTho - Sa 21.11.09 14:04
Ich kann fast keinen Zusammenhang mit der bisherigen Aufgabenstellung erkennen. Das liegt auch daran, dass du die Möglichkeiten der deutschen (Schrift-) Sprache nicht benutzt: Groß- und Kleinschreibung, Satzzeichen für sinnvolle Gliederung. Das sind nämlich keine Folterinstrumente von Lehrern oder Besserwissern wie mir, sondern sie dienen einem Leser dazu, den Inhalt eines Textes leichter zu verstehen.
Konkret kann ich im Moment nur sagen, dass es mehr als 1 bis 2 Zeilen Code sind. Es dreht sich um den Update-Befehl von DbDataAdapter (oder notfalls auch TableAdapter), aber dahinter verbergen sich viele Einzelmaßnahmen. Unter anderem müssen UpdateCommand usw. als passende SQL-Befehle festgelegt werden. Dazu habe ich bereits auf das OpenBook hingewiesen. Was meinst du denn, warum das in mehreren Kapiteln erst gegen Schluss behandelt wird?
Jürgen
hanspeterpeterhans - Sa 21.11.09 14:21
In VB gings ganz einfach :=)
Kha - Sa 21.11.09 14:29
In C# geht's sogar noch einfacher, sobald du die Grundlagen beherrschst und es keinen Grund mehr gibt, auf einen O/R-Mapper zu verzichten ;) . Davor allerdings wenigstens ein Projekt mit "reinem" ADO.NET bestritten zu haben, kann nicht schaden :D .
hanspeterpeterhans - Mo 23.11.09 11:53
Danke habs irgendwie geschafft ;)
nun ein neues Problem
Ich habe meine Access DB inder ich den Pfad zu einem Video angebe. Wie kann ich nun den Pfad auslesen dass es direkt das Video öffnet.
Habe mich schon ein bisschen infromiert und lade gerade das DirectX Software Development Kit herunter ;)
Danke und gruss
Kha - Mo 23.11.09 19:30
Ich nehme mal an, dass du den Pfad schon ausgelesen hast und es jetzt um die Anzeige der Datei geht? Dann erstelle dafür bitte ein separates Topic in der richtigen Sparte :) .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!