Aus Mysql Datenbank auslesen und in Textbox schreiben.



  • Hallo zusammen. Ich schreibe seit knapp 4 Monaten ein Launcher (Ein Programm um ein Spiel zu starten) Nun möchte ich eine News Funktion einbinden. Diese soll aus einer Mysql Datenbank einen Eintrag auslesen und diesen dann in einer Textbox anzeigen. Ich möchte dazu sagen das ich kein gelernter Programmierer bin und mir alles selbst "ergoogelt" hab 🙂

    Hier einmal die Funktion wie sie bisher besteht.

    private void CattaButton1_Load(object sender, EventArgs e)
            {
                string server = Properties.Settings.Default.MysqlServer;
                string port = Properties.Settings.Default.MysqlPort;
                string user = Properties.Settings.Default.MysqlUser;
                string userpassword = Properties.Settings.Default.MysqlPassword;
    
                MySqlCommand command = new MySqlCommand();
                command.Parameters.AddWithValue("@server", server);
                command.Parameters.AddWithValue("@port", port);
                command.Parameters.AddWithValue("@user", user);
                command.Parameters.AddWithValue("@password", userpassword);
    
                string myConnectionString = "Server=" + server + ";Port=" + port +  ";Uid=" + user + ";Pwd=" + userpassword + ";";
    
                MySqlConnection connection = new MySqlConnection(myConnectionString);
    
                try
                    {
                        System.Collections.ArrayList TmpArray = new System.Collections.ArrayList();
                        string head = "SELECT * FROM launcher.news WHERE id=1";
                        MySqlCommand cmd = new MySqlCommand(head, connection);
                        MySqlDataReader reader = null;
    
                        reader = cmd.ExecuteReader();
    
                        while (reader.Read())
                        {
                            textBox1.Text = Convert.ToString(reader);
                        }
    
                    }
                    catch (MySqlException Ex)
                    {
                        MessageBox.Show(Ex.Message);
                    }
                    finally
                    {
                        if (connection.State == ConnectionState.Open)
                        {
                            connection.Close();
    
                        }
                    }      
            }
    

    Wie ihr sehr beziehe ich meine Anmelde Daten aus dem user Properties. Die Connection funktioniert auch so. Diese habe ich schon bei einer anderen Funktion verwendet. Mein Problem ist es die Daten in meine Textbox zu bekommen 🙂



  • Die ArrayList könnt ihr euch weg denken. Ist ein Überbleipsel aus meinem Versuch davor 😃



  • Schau dir mal die Methoden der DbDataReader-Klasse (der Basisklasse von MySqlDataReader) an, insb. die Get...-Methoden z.B. GetString().



  • Habe ich mir durchgelesen. Doch ich komme nicht drauf wie ich das lösen soll... Hab es jetzt mit dem DataReader versucht. Doch ein ergebnis habe ich immernoch nicht.

    MySqlConnection connection = new MySqlConnection(myConnectionString);
                connection.Open();
                MySqlCommand cmd = new MySqlCommand("SELECT headline, content FROM news;", connection);
                MySqlDataReader reader = cmd.ExecuteReader();
    
                    while (reader.Read())
                    {
                        textBox1.Text = reader[4].ToString();
    
                    }
    
               reader.Close();
    


  • Ich habe es hinbekommen. Könnt ihr nochmal drüber schauen und mir sagen ob man vieleicht noch etwas Optimieren könnte.

    private void newsButton_Load(object sender, EventArgs e)
            {
                    string server = Properties.Settings.Default.MysqlServer;
                    string port = Properties.Settings.Default.MysqlPort;
                    string user = Properties.Settings.Default.MysqlUser;
                    string userpassword = Properties.Settings.Default.MysqlPassword;
    
                    MySqlCommand command = new MySqlCommand();
                    command.Parameters.AddWithValue("@server", server);
                    command.Parameters.AddWithValue("@port", port);
                    command.Parameters.AddWithValue("@user", user);
                    command.Parameters.AddWithValue("@password", userpassword);
    
                    string myConnectionString = "Server=" + server + ";Port=" + port + ";Uid=" + user + ";Pwd=" + userpassword + ";";
    
                    try
                    {
                        MySqlConnection connection = new MySqlConnection(myConnectionString);
                        connection.Open();
                        MySqlCommand cmd = new MySqlCommand("SELECT headline, content FROM launcher.news;", connection);
                        MySqlDataReader reader = cmd.ExecuteReader();
    
                        while (reader.Read())
                        {
                            newsBox.Text = reader[1].ToString();
    
                        }
    
                    }
                    catch (MySqlException ex)
                    {
    
                        MessageBox.Show(ex.Message);
                    }
                }
    


  • Das MySqlCommand command verwendest du gar nicht -> weg damit.

    Und MySqlConnection , MySqlCommand sowie der MySqlDataReader gehören freigegeben.
    => using

    Dann ist noch die Frage was du machen willst wenn es mehrere Zeilen in der Tabelle launcher.news gibt. Im Moment wird einfach die content *irgendeiner* Zeile angezeigt (die die zufällig die letzte ist die der Reader liest - was irgend eine sein kann, da ist keine Reihenfolge garantiert).

    Und dann frag ich mir wozu du die Spalte headline ausliest, wenn du sie nicht anzeigst.


Anmelden zum Antworten