MySQL Daten in C# Variable

Schormi

Mitglied
Hallo,

ich suche einen möglichst leichten Weg die Daten einer Zelle einer Tabelle von MySQL in C# varible oder in eine Textbox zu schreiben.

Bisher hab das so gemacht das ich die Daten von MySQL in ein Datagridview auslesen und der Textbox dann die Spalte zuweise.

Das müsste doch einfacher gehen oder?

mfg
 

Spyke

Premium-User
Ich werfe einfach mal ein paar Sachen in dem Raum da ich jetzt nicht genau weiß womit man am besten zu my sql verbindet.

DbCommand.ExecuteReader
Mit einer eifnachen SELECT Anweisung aufrufen ("SELECT meineSpalte FROM blablabla")

DbDataReader
ZUm auslesen der Spalten die in der SELECT Anweisung angegeben wurden.
(Siehe GetData, GetDouble, GetFloat, GetString, ... je nach Spalten Typ)

Zum lesen des Datensatzen vom DbDataReader die Read Methode verwenden.

Hoffe die Schlagwörter helfen dir erstmal.
 

Schormi

Mitglied
Also ich hab das jetzt mal versucht ohne die zwei genannten Begriffe zu realisieren, hab auch gleich Mysql connection und Befehle angehängt. Der Code wird fehlerfrei ausgeführt und die connection stimmt jedoch werden die MySQL Befehle nicht ausgeführt.

Code:
 private void Form1_Load(object sender, EventArgs e)
        {
            dateTimePicker1.Format = DateTimePickerFormat.Time;
            string Zeit = dateTimePicker1.Text;
           
            SerialPort mySerialPort = new SerialPort("COM1");
            mySerialPort.BaudRate = 9600;
            mySerialPort.Parity = Parity.None;
            mySerialPort.StopBits = StopBits.One;
            mySerialPort.DataBits = 8;
            mySerialPort.Handshake = Handshake.None;

            mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceviedHandler);
            mySerialPort.Open();
                                   
        }

        private void DataReceviedHandler(object sender, SerialDataReceivedEventArgs e)
        {

            SerialPort sp = (SerialPort)sender;
            string indata = sp.ReadExisting();
            Code = indata;
            int Nummer = Convert.ToInt32(Code);
            string mysql = "UPDATE Besucher set Ende = ? WHERE LfdNr = ?";
            string mysql2 = "INSERT INTO Archiv (Name, Firma, Begleitperson, Beginn, Ende, Kennz, Datum, Bez) SELECT Name, Firma, Begleitperson, Beginn, Ende, Kennz, Datum, Bez FROM Besucher where Ende > 0";
            string mysql3 = "DELETE FROM Besucher where Ende > 0";
            OdbcCommand DbCommand = new OdbcCommand();
            OdbcConnection DbConnection = new OdbcConnection(con);
            try
            {
                DbConnection.Open();
                DbCommand.Parameters.Add("@ende", OdbcType.Char).Value = dateTimePicker1.Text;
                DbCommand.Parameters.Add("@LfdNr", OdbcType.Char).Value = Nummer;
                DbCommand.Connection = DbConnection;
                DbCommand.CommandText = mysql;      //Ende einfügen
                DbCommand.ExecuteNonQuery();
                DbCommand.CommandText = mysql2;     // in Archiv schreiben
                DbCommand.ExecuteNonQuery();
                DbCommand.CommandText = mysql3;     // Aus aktueller Tabelle löschen
                DbCommand.ExecuteNonQuery();

            }

            catch (Exception f)
            {
                MessageBox.Show(f.Message);
            }

            finally
            {
                DbConnection.Dispose();
            }
}

wie gesagt es kommt kein Compilerfehler der Code läuft einwandfrei durch jedoch werden die MySQL Commandos nicht ausgeführt, mit dem ersten Befehl soll er die aktuelle zeit einfügen, dann den datensatz in eine andere Datentabelle schicken, dann den Datensatz aus der alten Tabelle löschen, ohne manuelle eingabe. Das alles wird ausgelöst durch DataRecevied Ereignis.
Aber da die MySQL Befehle nicht ausgeführt werden muss irgendetwas nicht stimmen.
Könnt ihr mir da vielleicht bitte helfen?
 

Schormi

Mitglied
Also so kann es funktionieren, ich machen eine Abfrage schreibe diese in ein Datagridview und weise den Variblen dann die Werte von Zellen des Datagridviews zu.
 

Spyke

Premium-User
Die SQL Befehle hattest du auch selbst direkt mal bei MySQL ausprobiert oder?

Ansonsten das einzige was mich irritiert ist das 'Ende' als Text behandelt wird, da hätte ich eher ein Datumsformat erwartet, aber da hätte es dann eigentlich von der MySQL Seite meckern müssen, sollte es da Typenkonflikte geben. (Genauso LfdNr)
 

Neue Beiträge