Thema: [C#]MySql

  1. #1
    Ensign
    Dabei seit
    Apr 2011
    Beiträge
    178

    [C#]MySql

    Hi liebe Com.
    Ich bin gerade dabei eine C# - MySql Verbindung aufzubauen. Wieso kann ich nichts mit der DataGridView(dgv_ausgeben) anzeigen?

    Code [php]:
    string myConnectionString = "SERVER=" + tb_host.Text + ";" +
                                "DATABASE=" + tb_database.Text + ";" +
                                "UID=" + tb_user.Text + ";" +
                                "PASSWORD=" + tb_passwort.Text + ";";
                MySqlConnection connection = new MySqlConnection(myConnectionString);
    
                if (global.connected == false)
                {
                    try
                    {
                        MySqlCommand command = connection.CreateCommand();
                        command.CommandText = "SELECT * FROM " + tb_table.Text;
                        MySqlDataReader Reader;
    
                        connection.Open();
                        if (connection.State == ConnectionState.Open)
                            MessageBox.Show("Connection established!", "MySQL Information",
                                            MessageBoxButtons.OK, MessageBoxIcon.Information);
    
                        MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM " + tb_table.Text, connection);
                        DataSet ds = new DataSet();
                        adapter.Fill(ds, tb_table.Text);
                        this.dgv_tabelle.DataSource = ds.DefaultViewManager;
    }
    
                    catch (MySql.Data.MySqlClient.MySqlException ex)
                    {
                        MessageBox.Show(ex.Message, "MySQL Exception",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Unknown Exception",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
    Geändert von MisterPresident (06.06.2011 um 22:27 Uhr)

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Commander
    Dabei seit
    Mär 2008
    Beiträge
    2.238

    AW: [C#]MySql

    Du hast einen lokalen MySQL server installiert? Dann kannst du entweder per MySQL-Konsole oder über ein zusätzliches Tool wie die MySQL Workbench neue DBs auf dem Server anlegen.

    Ob .Net Connector und Server dir da helfen können, kann ich dir nicht sagen, hab ich nie benutzt.

  4. #3
    Lt. Commander
    Dabei seit
    Mär 2008
    Beiträge
    1.238

    AW: [C#]MySql

    So zum ausprobieren ist MySQL doch viel zu massiv überbloatet und kompliziert. Würde eher SQLite benutzen. :/
    Heute schon dein SICP gelesen und deine Vorlesung besucht?


  5. #4
    Lieutenant
    Dabei seit
    Apr 2007
    Beiträge
    661

    AW: [C#]MySql

    Nachdem der TE heute seinen Initial-Post komplett umgeschrieben hat, steht mein Kommentar in keiner Relation zum Thema mehr, somit habe ich meinen Kommentar entfernt...
    Geändert von Rossibaer (06.06.2011 um 22:53 Uhr) Grund: TE erstellte komplett neues Thema, Antwort ist somit nicht mehr gültig
    Einem geschenkten Barsch schaut man nicht in ... die Kiemen.

  6. #5
    Commodore
    Dabei seit
    Okt 2008
    Ort
    Hamburg
    Beiträge
    4.129

    AW: [C#]MySql

    kannst doch einen ganz normalen sql query ausführen lassen mit dem du eine neue datenbank erstellst?
    Nutze Windows 8 und bin mega begeistert!

  7. #6
    Ensign
    Ersteller dieses Themas

    Dabei seit
    Apr 2011
    Beiträge
    178

    AW: [C#]MySql

    Ach man, ich hatte den dienst nicht gestartet -.- und ich habe gedacht das Query ist etwas anderes..

    Code [php]:
    string myConnectionString = "SERVER=" + tb_host.Text + ";" +
                                "DATABASE=" + tb_database.Text + ";" +
                                "UID=" + tb_user.Text + ";" +
                                "PASSWORD=" + tb_passwort.Text + ";";
                MySqlConnection connection = new MySqlConnection(myConnectionString);
    
                if (global.connected == false)
                {
                    try
                    {
                        MySqlCommand command = connection.CreateCommand();
                        command.CommandText = "SELECT * FROM " + tb_table.Text;
                        MySqlDataReader Reader;
    
                        connection.Open();
                        if (connection.State == ConnectionState.Open)
                            MessageBox.Show("Connection established!", "MySQL Information",
                                            MessageBoxButtons.OK, MessageBoxIcon.Information);
    
                        MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM " + tb_table.Text, connection);
                        DataSet ds = new DataSet();
                        adapter.Fill(ds, tb_table.Text);
                        this.dgv_tabelle.DataSource = ds.DefaultViewManager;
    }
    
                    catch (MySql.Data.MySqlClient.MySqlException ex)
                    {
                        MessageBox.Show(ex.Message, "MySQL Exception",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Unknown Exception",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
    Wieso wir in meine DataGridView(gdv_ausgeben) nichts eingetragen?

  8. #7
    Admiral
    Dabei seit
    Nov 2010
    Beiträge
    9.868

    AW: [C#]MySql

    Hi,

    so wie ich das sehe (ausser ich ÜBERsehe wieder was) führst du nirgends deine Command aus, kann das sein?

    Code:
    Reader = command.ExecuteReader();
    Habe ich aus diesem Beispiel.

    Ich arbeite leider nicht mit dem .NET-Connector, aber lies dir das Beispiel mal durch. Macht meiner Meinung nach auch keinen Sinn erst

    Code:
    command.CommandText = "SELECT * FROM " + tb_table.Text;
    und dann

    Code:
    MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM " + tb_table.Text, connection);
    nochmal "SELECT * FROM " + tb_table.Text" zu schreiben.

    VG,
    Mad


    Edit: Ok, du willst wahrscheinlich den Reader nicht mehr verwenden, da du nicht Zeilenweise ausgeben willst sondern in einem DG. Dann wirf ihn aber auch aus dem Code, wenn du was nicht benutzt dann wirf es raus, macht's nur unübersichtlich.

    Wieso verwendest du das Ganze nicht wie in diesem Beispiel von MySQL? Anstelle der XML packst du dein DataSet eben einfach als DataSource in dein Grid. Wenn dann nichts drinsteht: Ist die Tabelle gefüllt die du abfrägst?
    Geändert von Madman1209 (07.06.2011 um 08:16 Uhr)

  9. #8
    Ensign
    Ersteller dieses Themas

    Dabei seit
    Apr 2011
    Beiträge
    178

    AW: [C#]MySql

    Ich habe das jetzt mal probiert:

    Code [php]:
            private void btn_connect_Click(object sender, EventArgs e)
            {
                DataSet myData = new DataSet();
                MySql.Data.MySqlClient.MySqlConnection conn;
                MySql.Data.MySqlClient.MySqlCommand cmd;
                MySql.Data.MySqlClient.MySqlDataAdapter myAdapter;
    
                conn = new MySql.Data.MySqlClient.MySqlConnection();
                cmd = new MySql.Data.MySqlClient.MySqlCommand();
                myAdapter = new MySql.Data.MySqlClient.MySqlDataAdapter();
                BindingSource source = new BindingSource();
                
                conn.ConnectionString = "SERVER=" + tb_host.Text + ";" +
                                        "DATABASE=" + tb_database.Text + ";" +
                                        "UID=" + tb_user.Text + ";" +
                                        "PASSWORD=" + tb_passwort.Text + ";";
    
                try
                {
                    source.DataSource = GetData("SELECT * FROM " + tb_table.Text);
                    dgv_tabelle.DataSource = source;
                }
                catch (MySql.Data.MySqlClient.MySqlException ex)
                {
                    MessageBox.Show(ex.Message, "Report could not be created",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
    
            }
            public static DataTable GetData(string sqlCommand)
            {
                string connectionString = "SERVER=" + tb_host.Text + ";" +
                                        "DATABASE=" + tb_database.Text + ";" +
                                        "UID=" + tb_user.Text + ";" +
                                        "PASSWORD=" + tb_passwort.Text + ";";
    
                SqlConnection northwindConnection = new SqlConnection(connectionString);
    
                SqlCommand command = new SqlCommand(sqlCommand, northwindConnection);
                SqlDataAdapter adapter = new SqlDataAdapter();
                adapter.SelectCommand = command;
    
                DataTable table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                adapter.Fill(table); //Hier bekomme ich einen Fehler
    
    Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: Named Pipes Provider, error: 40 - Verbindung mit SQL Server konnte nicht geöffnet werden)
    
    
                return table;
    
            }

  10. #9
    Admiral
    Dabei seit
    Nov 2010
    Beiträge
    9.868

    AW: [C#]MySql

    Hi,

    Ich habe das jetzt mal probiert:
    Und? Ging's? Oder nicht? Oder wie oder was?

    VG,
    Mad

  11. #10
    Ensign
    Ersteller dieses Themas

    Dabei seit
    Apr 2011
    Beiträge
    178

    AW: [C#]MySql

    Ich weiß einfach nicht wie ich den fehler behebe..

    Schau code oben:
    //Hier bekomme ich einen Fehler

    Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: Named Pipes Provider, error: 40 - Verbindung mit SQL Server konnte nicht geöffnet werden)

  12. #11
    Admiral
    Dabei seit
    Nov 2010
    Beiträge
    9.868

    AW: [C#]MySql

    Hi,

    und wenn du nicht die Inhalte der Textboxen nimmst sondern direkt festlegst, welche Servereinstellungen benutzt werden sollen?

    Die Exception ist ja relativ eindeutig: SQL Verbindung kann nicht hergestellt werden.

    Gib mal deine übergebene "SQL COMMAND" fest ein. Erstmal keine Dynamik. Mache es wie in diesem Beispiel:

    http://dev.mysql.com/doc/refman/5.1/...g-crystal.html und schau ob das geht. Wenn das geht können wir schon mal was ausschließen.

    Oder du lädst dein komplettes Projekt hoch, dann schau ichs mir direkt im VS an.

    VG,
    Mad

  13. #12
    Ensign
    Ersteller dieses Themas

    Dabei seit
    Apr 2011
    Beiträge
    178

    AW: [C#]MySql

    Nein Funktioniert auch nicht..

    Hier das Projekt..
    Angehängte Dateien Angehängte Dateien

  14. #13
    Admiral
    Dabei seit
    Nov 2010
    Beiträge
    9.868

    AW: [C#]MySql

    Hi,

    alles klar, ich installier mir schnell MySQL und schau es mir an.

    VG,
    Mad

    Edit: Welche Version vom MySQL-Connector hast du benutzt? Damit ich die gleichen Voraussetzungen hab...

    Den hier, also den ADO.NET Connector? Oder einen anderen? Oder den hier, also den ODBC-Connector?
    Geändert von Madman1209 (08.06.2011 um 19:26 Uhr)

  15. #14
    Ensign
    Ersteller dieses Themas

    Dabei seit
    Apr 2011
    Beiträge
    178

    AW: [C#]MySql

    Den...

    und nimm diesen Anhang.. habe gerade noch einen Buttongeändert.. (mit dem kannst du deine Datenbank in eine Textbox einfügen... zum testen

    Danke dir
    Angehängte Dateien Angehängte Dateien

  16. #15
    Admiral
    Dabei seit
    Nov 2010
    Beiträge
    9.868

    AW: [C#]MySql

    Hi,

    alles klar. Ich teste und melde mich dann.

    VG,
    Mad

    Ergänzung vom 08.06.2011 20:25 Uhr:

    Hi,

    Ich habe deine Probleme beheben können.

    Code:
           
    
     private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    DataSet myData = new DataSet();
                    MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
                    MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
                    MySql.Data.MySqlClient.MySqlDataAdapter myAdapter = new MySql.Data.MySqlClient.MySqlDataAdapter();
    
                    conn.ConnectionString = 
                    "SERVER=" + tb_host.Text + ";" +
                    "DATABASE=" + tb_database.Text + ";" +
                    "UID=" + tb_user.Text + ";" +
                    "PASSWORD=" + tb_passwort.Text + ";";
    
                    cmd.CommandText = "SELECT * FROM " + tb_table.Text + ";";
                    cmd.Connection = conn;
    
                    myAdapter.SelectCommand = cmd;
                    myAdapter.Fill(myData);
    
                    dgv_tabelle.DataSource = myData.Tables[0].DefaultView;
                }
                catch (MySql.Data.MySqlClient.MySqlException ex)
                {
                    MessageBox.Show(ex.Message, "Report could not be created",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (Exception exep)
                {
                    MessageBox.Show(exep.Message);
                }
            }
    Ersetze deinen Eventhandler beim Button-Click hiermit, wirf die "Get Data" komplett raus und fertig.

    Zu deiner Frage "Warum kann ich nicht auf die Textboxen zugreifen": Du musst die Fehlermeldungen lesen Deine Methode war "static" deklariert, dann brauchst du einen Verweis auf dein Objekt. Habe ich auch gleich mitbehoben

    VG,
    Mad
    Geändert von Madman1209 (08.06.2011 um 20:27 Uhr)

  17. #16
    Ensign
    Ersteller dieses Themas

    Dabei seit
    Apr 2011
    Beiträge
    178

    AW: [C#]MySql

    Daaaankesehr ich bin 16 und hab mir seit 14 eher seit 15 programmieren selbst beigebracht - deswegen wenig struktur etc..
    Schulde dir was würd mir gern revangieren

    Könntest du mir auch sagen wieso es so gehört oder so ähnlich
    Geändert von MisterPresident (08.06.2011 um 21:51 Uhr)

  18. #17
    Admiral
    Dabei seit
    Nov 2010
    Beiträge
    9.868

    AW: [C#]MySql

    Hi,

    ach, kein Thema. Ich mach's beruflich. Wenn ich mal Zeit und Luft habe helf ich gern.

    Viel Spaß noch mit deinem Programm. Wenn noch was ist einfach melden.

    VG,
    Mad

  19. #18
    Ensign
    Ersteller dieses Themas

    Dabei seit
    Apr 2011
    Beiträge
    178

    AW: [C#]MySql

    Danke dir, schönen abend noch.

    MG Lukas

    Eine frage hätte ich noch wie kann ich die schön Resizen also das das "grau" nicht da ist, bzw. wie ich am einen Datensatz hineinschreibe..
    Geändert von MisterPresident (08.06.2011 um 22:10 Uhr)

  20. #19
    Admiral
    Dabei seit
    Nov 2010
    Beiträge
    9.868

    AW: [C#]MySql

    Hi,

    Könntest du mir auch sagen wieso es so gehört oder so ähnlich
    Naja, eigentlich ist es so auch noch nicht perfekt. Ich würde im Event-Handler "Button-Click" nur eine Methode "MacheIrgendwas()" aufrufen, in der ich dann den Rest drin hab.

    Ich kann dir den Code bei Gelegenheit auch noch durchkommentieren und schreiben, was wo an welcher Stelle genau passiert.

    Warum es bei dir nicht ging (also die Exception): Du hast versucht, eine DataTable zu befüllen, das geht so nicht. So kann man nu ein DataSet füllen meines Wissens, da du bei der Abfrage ("SELECT * FROM...") eine Tabelle zurückkriegst. Und aus diesem DataSet schnappt man sich dann die erste Tabelle ("Table[0]") und benutzt diese als DatenQuelle im DataGridView.

    Eine frage hätte ich noch wie kann ich die schön Resizen also das das "grau" nicht da ist, bzw. wie ich am einen Datensatz hineinschreibe..
    Den Satz verstehe ich nicht so ganz. Was genau möchtest du wissen?

    VG,
    Mad

  21. #20
    Ensign
    Ersteller dieses Themas

    Dabei seit
    Apr 2011
    Beiträge
    178

    AW: [C#]MySql

    Wenn ich in meine DataGridView einen Datensatz schreibe, ist die DataGirdView höchstwarscheindlich zu groß/klein und dann sieht ma eben diesen grauen rahmen..
    [Screeny]

    Wenn ich nun einen neuen Datensatz hineinschreiben möchte also eine neue Zeile, wie mache ich es am bessten, denn wenn ich normal

    Code [php]:
    INSERT INTO
        News(Autor, Titel, Inhalt, Datum)
    VALUES
        ("Ich",
         "Meine erste News",
         "Hiermit teste ich wie man Datensätze in MySQL einfügt",
        NOW());
    So schreiben würde.. Jedoch möchte ich das es automatisch abläuft, dh. das ich
    Code [php]:
    News(Autor, Titel, Inhalt, Datum)
    automatisiere.. aber wie :\

    LG
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicke auf die Grafik für eine größere Ansicht 

Name:	C#.png 
Hits:	36 
Größe:	57,0 KB 
ID:	236346  
    Geändert von MisterPresident (09.06.2011 um 20:56 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •