C# Mysql Anzeige Problem

Gotenks666

Ensign
Registriert
Mai 2009
Beiträge
165
Gute Tag liebe Communtiy

Ich habe mir eine Form erstellt
mit der ich eine Datenbank Table auslesen und in einer Listbox anzeigen möchte.
Nun zu meinem Problem:
Es wird nicht in der Listbox angezeigt.

Hier mal mein Code:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        public Form1()
        {
                                         
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            string myConnectionSting =  "SERVER=localhost;" +
                                        "DATABASE=flyff;" +
                                        "UID=root;" +
                                        "PASSWORD=;";
            MySqlConnection connection = new
            MySqlConnection(myConnectionSting);
            MySqlCommand command = connection.CreateCommand();
            command.CommandText = "SELECT Name * FROM Serverlist";
            MySqlDataReader Reader;
            connection.Open();
            Reader = command.ExecuteReader();

            while (Reader.Read())
            {
                string row = "";
                for (int i = 0; i < Reader.FieldCount; i++)
                    row += Reader.GetValue(i).ToString() + "; ";
                this.listBox1.Items.Add(row);
            }
            connection.Close();

        }
    }
}

Passwort habe ich keines, da ich es local mit xampp teste.

Zu meiner Datebank habe ich eine angelegt die "flyff" heist.
in der Datenbank ist eine Table die sich "Serverlist" nennt
Darin sind mehrer felder. Doch ich möchte nur "Name" in der Listbox anzeigen
doch es wird nicht getan
 
Bin kein C# Programmierer, komme eher von Java. Kann es sein, das man die Ansicht der Liste nach dem ausführen deiner DB Anfrage noch aktuallisieren muss. Denke mal, das die liste die ergebnisse enthält, sie werden nur noch nicht angezeigt. In Java feuert man dann irgendein update dingens oder führt repaint aus.
 
Nun habe ich eine Update Funktion eingebaut per Buttonklick

Code:
        private void button1_Click(object sender, EventArgs e)
        {
            // Stop the ListBox from drawing while items are added.
            listBox1.BeginUpdate();

            // Loop through and add five thousand new items.
            for (int x = 1; x < 5000; x++)
            {
                listBox1.Items.Add("Item " + x.ToString());
            }
            // End the update process and force a repaint of the ListBox.
            listBox1.EndUpdate();

            
        }

doch nun werden zahlen von 1 bis 999 angezeigt und nicht die Namen die in der Datenbank stehen
 
Gotenks666 schrieb:
Nun habe ich eine Update Funktion eingebaut per Buttonklick

Code:
            // Loop through and add five thousand new items.
            for (int x = 1; x < 5000; x++)
            {
                listBox1.Items.Add("Item " + x.ToString());
            }

doch nun werden zahlen von 1 bis 999 angezeigt und nicht die Namen die in der Datenbank stehen
Das liegt daran, dass du "x" ausgibst und in der Schleife hochzaehlst.

Hast du mal mit dem Debugger geguckt, was der Reader ausspuckt, bevor du den String zur ListBox hinzufuegst?
Code:
row += Reader.GetValue(i).ToString() + "; ";
 
Ich bekomme nun eine Error Meldung im Programm :

"You have an erro in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM patch' at line 1.
 
Dann stimmt deine SQL Abfrage nicht.
Geh in den Debugger und guck nach, was an die DB geschickt (command.CommandText) wird.

Gotenks666 schrieb:
Doch ich möchte nur "Name" in der Listbox anzeigen
doch es wird nicht getan
Und nimm das "*" aus der SQL Abfrage, falls die noch so aussieht wie oben. "SELECT *..." holt dir saemtliche Felder.
 
Zuletzt bearbeitet:
Hi,

1. SQL-Syntax im MySQL-Query-Browser prüfen und lauffähig machen.
2. Nicht die Row ausgeben sondern den "Value" des Spaltenelements der jeweiligen Row.
3. Ich würde dir empfehlen ein DataGridView zu nutzen, das ist deutlich besser als eine Listbox, gerade für Datenbankabfragen / Tabellen perfekt. Dem DataGridView einfach als DataSource die komplette Table geben, die du von deiner Abfrage erhältst.

VG,
Mad
 
Zurück
Oben