ERLEDIGT
JA
JA
ANTWORTEN
12
12
ZUGRIFFE
13571
13571
EMPFEHLEN
-
11.04.06 21:15 #1
Hallo,
ich habe die Suchfunktion bemüht und bereits diverse Anleitungen durchgearbeitet, aber bislang keine Lösung für mein Problem gefunden. Ich hoffe also, dass Ihr mir helfen könnt. Ich bin von Delphi umgestiegen und habe trotz guter C++-Kenntnisse einige Probleme
Aufgabe ist, nach dem Programmstart die Verbindung zu einer mySQL-DB im Internet herzustellen, was auch klappt (ich hab hier mal XXX für den tatsächlichen String hingeschrieben):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
strConn = "XXX"; try { conn = new MySql.Data.MySqlClient.MySqlConnection(); conn.ConnectionString = strConn; //conn.Open(); //MessageBox.Show("Konnektierung erfolgreich"); verbindungHerstellenToolStripMenuItem.Enabled = false; verbindungtrennenToolStripMenuItem.Enabled = true; datenExportierenToolStripMenuItem.Enabled = true; onlineRegistrierungenToolStripMenuItem.Enabled = true; } catch (MySql.Data.MySqlClient.MySqlException ex) { MessageBox.Show(ex.Message); }
Über einen Menüpunkt wird dann ein Formular aufgerufen, das die Daten einer bestimmten Tabelle zur Kontrolle anzeigen soll. In .NET 2.0 geht das offenbar in Tabellenform nur über ein DataGridView, das ich also im Formular eingebettet habe. Allerdings bekomme ich es nicht hin, das im Grid auch die Daten angezeigt werden. Der Code des Formulars sieht so aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
public partial class Form_DatenVerwalten : Form { private MySql.Data.MySqlClient.MySqlConnection conn; private MySql.Data.MySqlClient.MySqlDataAdapter myAdapter; private MySql.Data.MySqlClient.MySqlCommand myCommand; private string strSQL = ""; public Form_DatenVerwalten(MySql.Data.MySqlClient.MySqlConnection Connection) { InitializeComponent(); conn = new MySql.Data.MySqlClient.MySqlConnection(); conn.ConnectionString = Connection.ConnectionString; } private DataSet GetData(string sql) { DataSet myData = new DataSet(); myAdapter = new MySql.Data.MySqlClient.MySqlDataAdapter(); myCommand = new MySql.Data.MySqlClient.MySqlCommand(); myCommand.CommandText = sql; myCommand.Connection = conn; myAdapter.SelectCommand = myCommand; myAdapter.Fill(myData); return myData; } private void Form_DatenVerwalten_Load(object sender, EventArgs e) { strSQL = "SELECT * FROM anmeldungen"; dsDaten = GetData(strSQL); } }
Der Konstruktor übernimmt als Parameter die Verbindung zur Datenbank, so dass ich auch hier darauf zugreifen kann. "dsDaten" ist ein DataSet, das ich mit Hilfe des Assistenten angelegt habe. Es steht als DataSource für das DataGridView eingetragen. Das DataGridView enthält die Datenspalten (zunächst nur Name und Vorname sowie eine zusätzliche Spalte, die mit einer fortlaufenden Nummer gefüllt werden soll, die nicht aus der DB ausgelesen wird).
Wie kann ich nun folgendes realisieren:
Code :1 2 3 4 5 6
Für alle vorhandenen Datensätze Füge dem DataGridView eine neue Zeile hinzu Erzeuge Nr. Lies Name und Vorname aus dem aktuellen Datensatz Schreibe Nr., Name, Vorname in die entsprechenden Spalten Gehe zu nächstem Datensatz
Für eine Senkrechtstellung des Holzbalkens vor meinem Kopf wäre ich sehr dankbar!
Eine Lüge kann einmal um die ganze Welt laufen, bevor die Wahrheit ihre Stiefel angezogen hat.
(Winston Churchill)
-
Hallo Jochen_Schneider!
Willkommen im Forum!
Hast auch hier im Forum gesucht?Falls Du noch Fragen hast, melde Dich einfach wieder.Schlüsselwörter: dataset, databind ; Forum: .NET auch in Unterforen
Kann Dir aber nicht versprechen das ich heut wieder Antworten kann.
Dafür gibt es hier aber noch ne ganze Menge mehr versierte User...
MfG,
cosmo
PS: Du bist einer der wenigen hier der ordentlich Pascal und Camel cased. Weiter so
Geändert von Christian Kusmanow (12.04.06 um 13:34 Uhr)
MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
12.04.06 12:22 #3
Hallo Cosmo,
vielen Dank für die nette Begrüßung. In der Tat habe ich auch bereits in diesem Forum gesucht, werde aber noch mal nachschauen. Bei der Vielfalt hier übersieht man ja schnell etwas. Eine customized-Antwort auf mein Problem wäre natürlich der Idealfall
Ich bitte um Verzeihung, aber Dein PS habe ich nicht verstanden. Ich case Pascal und Camel ordentlich? Was bedeutet das?
Eine Lüge kann einmal um die ganze Welt laufen, bevor die Wahrheit ihre Stiefel angezogen hat.
(Winston Churchill)
-
Hallo Jochen!
@camelCasing:
Bezeichner sollen in C# klein anfangen aber jeder neue Wortteil soll groß beginnen. Beispiel bei dir: "verbindungtrennenToolStripMenuItem"
@PascalCasing:
Methoden sollen in C# groß anfangen und auch jeder neue Wortteil soll groß beginnen. Beispiel bei dir: "GetData(...)"
Das meint cosmo...
Gruß, Niko:. Sollte mein Beitrag geholfen haben, würde ich mich über eine entsprechende Bewertung freuen.
SYNCING.NET - Dateien und Outlook Synchronisieren leicht gemacht. >> Jetzt testen
--- Toleranz darf nur eine vorübergehende Gesinnung sein, die zur Anerkennung führen muss. Dulden heißt beleidigen. --- (Johann Wolfgang von Goethe)
moneypenny - das mobile büro
-
12.04.06 12:39 #5
Hi!
Ich komme grad mit Deinem 'DataGridView' nicht so recht klar, was meinst Du damit?
Oder denke ich mir das richtig und Du hast auf Deinem Formular ein DataGrid abgelegt?
Denn wenn das so ist, dann schau Dir mal die Eigenschaften 'DataSource' und 'DataMember' des DataGrids an, da kannst Du DataSet und DataTable eintragen.
MfG ..::SD::..
PS @ Azmodan:
Also ich finde es oftmals etwas sehr pingelig was die Schreibweise angeht. Nur weil jemand in einem Buch schreibt, man solle es so oder so machen rennen alle hinterher....
Ich schreibe z.B. bei Methoden das Verb grundsätzlich klein "getData()", egal ob ich in VB.NET, C#, Java oder PHP was programmiere... Somit habe ich für mich einen Überblick und muss mir nicht bei jeder Sprache was Neues angewöhnen.Geändert von SixDark (12.04.06 um 12:44 Uhr)
-
12.04.06 13:33 #6
Hallo Azmodan,
vielen Dank für die Erläuterungen. Ich bemühe mich in der Tat um Konsistenz und Konsequenz in meinem Quellcode, dann ist er für mich zu einem späterem Zeitpunkt auch einfacher nachzuvollziehen. Grundsätzlich ist es jedoch IMHO eine reine Geschmacksfrage, zumindest wenn man alleine an einem Projekt sitzt und keine anderen Personen sich einlesen müssen.
@SixDark,
das Steuerelement heisst tatsächlich DataGridView (ist offenbar neu in .NET 2.0). Ein DataGrid steht mir nicht zur Verfügung. Hier ist der vom Designer angelegte Code:
Code :1
this.dataGrid_Registrierungen = new System.Windows.Forms.DataGridView();
Ich nutze übrigens Visual C# Express 2005, falls das wichtig ist.Eine Lüge kann einmal um die ganze Welt laufen, bevor die Wahrheit ihre Stiefel angezogen hat.
(Winston Churchill)
-
Benennung der Steuerlemente - Thread
Zitat von Jochen_Schneider
Ist gar net so lang her, als ich umgestiegen bin... Hat mir aber nur Vorteile gebracht.
MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
12.04.06 13:59 #8
Ich habe gerade in einem anderen Thread folgendes Schnipsel gefunden:
Code :1 2 3
ds.Tables.Add(dt); DataGrid1.DataSource = dt; DataGrid1.DataBind();
Das DataGridView besitzt nun aber leider keine DataBind() - Methode...
Interessanterweise gibt es den DatenTyp DataGrid aber auch weiterhin, er wird nur nicht in der Toolbox für Steuerelemente angezeigt. Ich werde mal versuchen, das DataGridView in ein DataGrid umzuwandeln. Vielleicht klappt es ja dann.Eine Lüge kann einmal um die ganze Welt laufen, bevor die Wahrheit ihre Stiefel angezogen hat.
(Winston Churchill)
-
12.04.06 14:57 #9
Endlich habe ich das Problem gelöst!
Ich habe das DataGridView in ein DataGrid geändert (von dessen Existenz ich erst hier erfahren habe) und den Code etwas angepasst:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
private DataTable GetData(string sql) { DataTable myData = new DataTable(); myAdapter = new MySql.Data.MySqlClient.MySqlDataAdapter(); myCommand = new MySql.Data.MySqlClient.MySqlCommand(); myCommand.CommandText = sql; myCommand.Connection = conn; myAdapter.SelectCommand = myCommand; myAdapter.Fill(myData); return myData; } private void Form_DatenVerwalten_Load(object sender, EventArgs e) { DataTable tableTemp = new DataTable(); strSQL = "SELECT name, vorname FROM anmeldungen"; tableTemp = GetData(strSQL); DataRow temprow = tableTemp.Rows[0]; DataRow row = dsDaten.Tables["Table_Registrierungen"].NewRow(); row["Name"] = temprow[0]; row["Vorname"] = temprow[1]; dsDaten.Tables["Table_Registrierungen"].Rows.Add(row); }
Jetzt bastel ich noch eine schöne Schleife, so dass auch alle Datensätze ausgelesen werden, und ich bin fertig.
Danke an alle!
Eine Lüge kann einmal um die ganze Welt laufen, bevor die Wahrheit ihre Stiefel angezogen hat.
(Winston Churchill)
-
12.04.06 15:16 #10
@Jochen Schneider:
Jep, es wäre gut gewesen, wenn ich die Sache mit dem 2.0er Framework gewusst hätte.
In diesem wurden nämlich zum Vorgänger so ca. 2000 Klassen geändert bzw. hinzugefügt. Da kann es durchaus sein, dass das DataGrid etwas davon abbekommen hat...
Allerdings hab ich die Methode DataBind() noch nie aufrufen müssen?! Ich habe einfach meine Daten in ein DataSet geapckt und dann das DataSet der DataSource Eigenschaft zugewiesen - fertig, schon waren die Daten drin. Hast Du das mal bei diesem - mir ominös vorkommenden - DataGridView ausprobiert? Oder gibt es dann Fehler oder passiert gar nix? würde mich auch mal interessieren, da ich mit dem neuen Framework noch nicht soviel gearbeitet habe - nutze immer noch das 1.1er...
MfG
..::SD::..
-
nochmal
Du hast sicherlich noch nicht gemeinsam mit anderen Entwicklern an einem Projekt gearbeitet.
Zitat von SixDark
Sicherlich in deinem Betrieb/Firma aber sich noch nicht mit fremden Entwicklern,
sonst würdest nicht so argumentieren.
Man sollte immer die Idiome beachten die sich eingebürgert und vor allem durchgesetzt haben,
anstatt, so wie ich damals
, konsequent seine eigenen durchsetzen zu wollen...
Der Umstieg, wenn es soweit ist und Du das dann brauchst, ist dann nicht mehr notwendig.
Geändert von Christian Kusmanow (12.04.06 um 15:32 Uhr) Grund: grammatik
MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
12.04.06 15:30 #12
Hallo SixDark,
ich nutze nun doch wieder ein DataGridView, da es mir mehr Möglichkeiten bietet (unter anderem Spalten mit Checkboxen statt Text uvm.). Der zuletzt gepostete Code zum Befüllen funktioniert auch damit.
So wie ich das verstanden habe, kann ein DataSet mehrere Tabellen (DataTable) beinhalten; in der DataMember-Eigenschaft wird der anzuzeigende Table festgelegt. Mir war nur bislang nicht klar, wie ich die einzelnen Zeilen des Tables mit Inhalt füllen kann, und zwar vollständig "zu Fuß", da ich die volle Kontrolle haben will
Eine Lüge kann einmal um die ganze Welt laufen, bevor die Wahrheit ihre Stiefel angezogen hat.
(Winston Churchill)
-
12.04.06 15:47 #13
@Jochen Schneider:
Ich hab auch immer gern die volle Kontrolle - vor allem bei Datenbankanbindungen!
@cosmochaosmaker:
Doch, und eben drum! Weil die Entwickler aus verschiedenen Sprachecken kamen hat sich nämlich auf Anhieb niemand verstanden. Das funktioniert wunderbar, soweit alle die gleiche Sprache sprechen, aber bei verschiedenen hat man da schnell den Topf auf. Und ich kreier mir ja auch nicht meine eigenen Regeln, sondern nutze die für mich am verständlichsten für alle Sprachen.Du hast sicherlich noch nicht gemeinsam mit anderen Entwicklern an einem Projekt gearbeitet.
Sicherlich in deinem Betrieb/Firma aber sich noch nicht mit fremden Entwicklern,
sonst würdest nicht so argumentieren.
MfG ..::SD::..
Ähnliche Themen
-
DataGridView Updaten mit C# und MySQL
Von shel im Forum .NET DatenverwaltungAntworten: 8Letzter Beitrag: 16.10.09, 11:29 -
MySQL Connector, VS2008, C++, DataGridView Probleme
Von gamefreaktegel im Forum .NET Windows FormsAntworten: 9Letzter Beitrag: 20.09.08, 14:03 -
Informationsquelle anzapfen (bsp. VirenTop10)
Von XEMO im Forum PHPAntworten: 2Letzter Beitrag: 07.07.05, 14:42 -
irc server anzapfen
Von Twin im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 1Letzter Beitrag: 05.04.05, 05:25 -
newsseiten anzapfen
Von polar im Forum PHPAntworten: 12Letzter Beitrag: 28.09.02, 15:35





Zitieren
Login





