[C#]MySql

Hi,

ich empfehle dir, dich in DataBindings einzulesen. Dann kannst du direkt in der DataGrid editieren. Würde ich sowieso empfehlen, wenn du mit einer MySQL-DB arbeitest. Da findest du sicherlich einige Beispiele im Netz.

Ausserdem kannst du bestimmte Dinge automatisch ablaufen lassen, wenn du auf die Events aufpasst und diese nutzt.

Aber ganz ehrlich: Der Ansatz in allen Ehren, aber ich würde von ganz vorne anfangen und nach einer Anleitung / Tutorial arbeiten. Einfach so vor sich hin bringt man sich schnell Dinge falsch bei.

Das mit dem grauen Rahmen...sorry, ich kapier immer noch nicht was du genau meinst. Möchtest du die Zeilenbreite dynamisch anpassen oder was genau meinst du?

VG,
Mad
 
Aber ganz ehrlich: Der Ansatz in allen Ehren, aber ich würde von ganz vorne anfangen und nach einer Anleitung / Tutorial arbeiten. Einfach so vor sich hin bringt man sich schnell Dinge falsch bei.

Ich wollte einfach mal ein Programm erstellen das Funktioniert und dann ein neues schreiben, welches dann sauber usw. ist.
Zum Tutorial - ich habe keins gefunden was mich so richtig anspricht. Ursprünglich hab ich nach diesem hier gearbeitet: Tutorial

Zu den DataBindings werde versuchen, mich darin einlesen.

Grauen Rahmen vergessen wir ;)

LG
 
Zuletzt bearbeitet:
Hi,

Grauen Rahmen vergessen wir

Gerne :D Ich versteh es leider wirklich nicht, sonst hätte ich dir gerne geholfen.

GalileoComputing
CSharp Station
Direkt bei MS

Da findest du dutzende Tutorials und Informationen, die alle interessant sind!

Und nur um das klarzustellen: Für ein erstes Projekt in C# als Autodidakt war's schon echt gut! Nicht das du meinst, ich nörgle :)

Einfach am Ball bleiben, dann wird das schon.

VG,
Mad
 
Du nörgelst schon nicht ;)

Grauer Rahmen: Wenn ich mein DataGridView befülle wird ja eine Tabelle und wenn diese zu klein ist, bleibt Seitlich und unten ein Rahmen (Grau). Meine Frage wie kann ich den DataGridView in Breite und Größe verändern um diese Optimal an Zeilen und Spalten anzupassen?

War nicht mein erstes (Habe schon einige sonstige geschrieben (Hello World :DD, Taschenrechner, kleines Textverschlüsslungsprogram..) aber danke :)

Ich lese mich da mal rein, habe gerad dieses hier gefunden: Tutorial schein zu passen, ich versuchs halt mal, bin ja schüler und hab zeit :D

Leider habe ich gerade ein gaaanz anderes Problem: Wie kann ich in einer Klasse auf eine Public-Textbox zugreifen?

Fehler 9 Für das nicht statische Feld, die Methode oder die Eigenschaft "Passwörter_Verwaltung.Main.tb_passwort" ist ein Objektverweis erforderlich. C:\Users\Lukas\Documents\Visual Studio 2010\Projects\Passwörter-Verwaltung\Passwörter-Verwaltung\Main.cs 36 35 Passwörter-Verwaltung

Wie kann ich das statisch machen bzw. welcher Objektverweis?

Danke danke danke nochmal ;)

LG
 
Zuletzt bearbeitet:
Hi,

statisch machst du es mit "static" in der Deklaration. Ein Objektverweis ist, wenn du dir ein Onjekt mit einem Namen erzeugst, in dem Die Textbox ist.

Code:
DeineKlasse Peter = new DeineKlasse();

Hat "DeineKlasse" jetzt z.B. die "public" Textbox, dann kannst du mit

Code:
Peter.TextBox

drauf zugreifen.

Wenn es nicht klappt: Code posten, dann erklär ich es dir direkt in deinem Code.

Das Grau in der DataGrid kannst du sicherlich auch in Weiß ändern, oder? Ich würde einfach die Breite jedes Datensatzes auf die Breite der DataGrid stellen, dann hast du Rechts und Links schon mal keinen Rand mehr.

Unten finde ich den Rand nicht störend, da ich so gleich sehe, wie viele Datensätze es gibt. Wenn du aber trotzdem das Grau nicht magst, schau mal, ob du die Farbe ändern kannst :)

VG,
Mad
 
PHP:
        static public class global 
        {
            
            public static bool blinking = false;
            public static bool connected = false;
            public string query = "SELECT * FROM" + tb_table.Text;
            public string connectionstring =                   
                    "SERVER=" + tb_host.Text + ";" +
                    "DATABASE=" + tb_database.Text + ";" +
                    "UID=" + tb_user.Text + ";" +
                    "PASSWORD=" + tb_passwort.Text + ";";
        }

Hier möchte ich auf die Textbox zugreifen.. Dein Beispiel oben verwende ich, aber ich eben gerade umgekehrt.

Ich habe ColumSize auf Auto gestellt.
Ich würde einfach die Breite jedes Datensatzes auf die Breite der DataGrid stellen, dann hast du Rechts und Links schon mal keinen Rand mehr.
Size von DGV duch Anzahl der Spalten und dann jeder Spalte diesen Wert geben?

LG
 
Hi,

gib mal bitte mehr von dem Code, ohne Kontext schwierig zu sagen, wo du gerade bist. Aber vielleicht gleich kurz:

- Reihenfolge ist immer als erstes die Sichtbarkeit, zumindest hat sich das wohl bei vielen so eingebürgert. Daher "public static class" nicht "static public class"
- "tb_table" gibts in der Klasse nicht oder? Du willst auf die "tb_table" von einem anderen Objekt zugreifen oder? Wie gesagt, mehr Code

Size von DGV duch Anzahl der Spalten und dann jeder Spalte diesen Wert geben?

Ich würde einfach sinnvolle Werte vergeben, z.B. bei "Anrede" 100px, bei "Nachname" 200px, und das letzte Feld von der Breite automatisch anpassen lassen.

VG,
Mad
 
Ich wüsste nicht was ich dir noch geben sollte.. tb_tabel und alle ander tb_* sind in der Hauptform Main.

LG

Eine Frage Parallel dazu:
Ich habe einen neuen Button angelegt um etwas auszuprobieren:

PHP:
            //Verbindung
            string connectionstring = "SERVER=" + tb_host.Text + ";" +
                                      "DATABASE=" + tb_database.Text + ";" +
                                      "UID=" + tb_user.Text + ";" +
                                      "PASSWORD=" + tb_passwort.Text + ";";

            //Tabelle
            string query = "SELECT * FROM" + tb_table.Text;

            //Auslesen
            MySqlDataAdapter dAdapter = new MySqlDataAdapter(query, connectionstring);
            
            MySqlCommandBuilder cBuilder = new MySqlCommandBuilder(dAdapter);

            //Speichern
            DataSet dTable = new DataSet();
            //Einfügen
            dAdapter.Fill(dTable); 

//Hierbei entsteht ein Fehler:You have an error in your SQL syntax; 
//check the manual that corresponds to your MySQL server version for the 
//right syntax to use near 'FROMhomepages' at line 1

            dgv_tabelle.Visible = true;


            //Syncronisieren
            BindingSource bSource = new BindingSource();

            //Quelle ändern
            bSource.DataSource = dTable;

            dgv_tabelle.DataSource = bSource;
 
Zuletzt bearbeitet:
Hi,

ich kann nur wiederholen: Lies die Fehlermeldungen :) Steht alles da:

You have an error in your SQL syntax [...] near 'FROMhomepages' at line 1

An der Stelle

string query = "SELECT * FROM" + tb_table.Text;

muss ein Leerzeichen rein nach dem "FROM":

string query = "SELECT * FROM " + tb_table.Text;

Ansonsten:

tb_tabel und alle ander tb_* sind in der Hauptform Main.

Und Main ist eine andere Klasse? Dann musst du "Main.tb_table" ausprobieren. Du greifst auf ein instantiiertes Objekt der "Form"-Klasse zu, in deinem Fall wohl "Main". Du musst den Namen des Objekts und dann den Namen des Elements nutzen.

Beispiel: Du hast eine ganze Klasse Schulkinder vor dir stehen. Einem läuft die Nase. Dann sagst du ja auch nicht einfach "DeineNaseLaeuft()" sondern "Peter.DeineNaseLaeuft()", damit sich auch der richtige angesprochen fühlt.

VG,
Mad
 
Ach dummer Fehler, ich habe zwar die Meldung gelesn aber ich wusste einfach nicht wo der Syntax Fehler war >.<

PHP:
        public class global 
        {
            public static MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
            public static DataSet myData = new DataSet();
            public static MySql.Data.MySqlClient.MySqlDataAdapter myAdapter = new MySql.Data.MySqlClient.MySqlDataAdapter();
            public static bool blinking = false;
            public static bool connected = false;
            public string query = "SELECT * FROM " + Main.tb_table.Text;
            public string connectionstring = "SERVER=" + Main.tb_host.Text + ";" +
                                               "DATABASE=" + Main.tb_database.Text + ";" +
                                               "UID=" + Main.tb_user.Text + ";" +
                                               "PASSWORD=" + Main.tb_passwort.Text + ";";
        }

Im Vorhinein habe ich es schon so probiert aber noch immer die selbe Fehlermeldung..

PHP:
        void connect()
        {
            MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();


            global.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 = global.conn;

            global.myAdapter.SelectCommand = cmd;
            global.myAdapter.Fill(global.myData);

            dgv_tabelle.Visible = true;
            bSource.DataSource = global.myData.Tables[0].DefaultView;

            dgv_tabelle.DataSource = bSource;

        }


        private void btn_create_Click(object sender, EventArgs e)
        {
            global.myAdapter.Update(global.myData, tb_table.Text); //Update: TableMapping['homepages'] oder DataTable 'homepages' kann nicht gefunden werden. 

//Wieso wird die nicht gefunden?! *ratlos
        }

Connect () funktioniert.. dann beim ändern wenn die Upadate funktion aufgerufen wird (mit Button) eben der Fehler
 

Anhänge

  • Passwörter-Verwaltung.rar
    458,4 KB · Aufrufe: 108
Zuletzt bearbeitet:
Zurück
Oben