tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
13571
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Jochen_Schneider
    Jochen_Schneider Jochen_Schneider ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Ort
    Bei Dortmund
    Beiträge
    51
    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)

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Hallo Jochen_Schneider!

    Willkommen im Forum!

    Hast auch hier im Forum gesucht?
    Schlüsselwörter: dataset, databind ; Forum: .NET auch in Unterforen
    Falls Du noch Fragen hast, melde Dich einfach wieder.
    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...

  3. #3
    Avatar von Jochen_Schneider
    Jochen_Schneider Jochen_Schneider ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Ort
    Bei Dortmund
    Beiträge
    51
    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)

  4. #4
    Registriert seit
    Sep 2004
    Ort
    Untergruppenbach
    Beiträge
    381
    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

  5. #5
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    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)
     

  6. #6
    Avatar von Jochen_Schneider
    Jochen_Schneider Jochen_Schneider ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Ort
    Bei Dortmund
    Beiträge
    51
    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)

  7. #7
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Zitat Zitat von Jochen_Schneider
    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.
    Benennung der Steuerlemente - Thread
    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...

  8. #8
    Avatar von Jochen_Schneider
    Jochen_Schneider Jochen_Schneider ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Ort
    Bei Dortmund
    Beiträge
    51
    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)

  9. #9
    Avatar von Jochen_Schneider
    Jochen_Schneider Jochen_Schneider ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Ort
    Bei Dortmund
    Beiträge
    51
    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)

  10. #10
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    @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::..
     

  11. #11
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    nochmal
    Zitat Zitat von SixDark
    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.
    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.
    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. #12
    Avatar von Jochen_Schneider
    Jochen_Schneider Jochen_Schneider ist offline Mitglied Silber
    Registriert seit
    Apr 2006
    Ort
    Bei Dortmund
    Beiträge
    51
    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)

  13. #13
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    @Jochen Schneider:
    Ich hab auch immer gern die volle Kontrolle - vor allem bei Datenbankanbindungen!

    @cosmochaosmaker:
    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.
    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.

    MfG ..::SD::..
     

Ähnliche Themen

  1. DataGridView Updaten mit C# und MySQL
    Von shel im Forum .NET Datenverwaltung
    Antworten: 8
    Letzter Beitrag: 16.10.09, 11:29
  2. MySQL Connector, VS2008, C++, DataGridView Probleme
    Von gamefreaktegel im Forum .NET Windows Forms
    Antworten: 9
    Letzter Beitrag: 20.09.08, 14:03
  3. Antworten: 2
    Letzter Beitrag: 07.07.05, 14:42
  4. irc server anzapfen
    Von Twin im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 05.04.05, 05:25
  5. newsseiten anzapfen
    Von polar im Forum PHP
    Antworten: 12
    Letzter Beitrag: 28.09.02, 15:35