Laden...

Forenbeiträge von NeueWelt Ingesamt 54 Beiträge

10.10.2011 - 15:04 Uhr

die Fragezeichen sind in '?' weil sonst ein fehler in mysql syntax kommt:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the rigth syntax to use near '? WHERE LfdNR = ?' at line 1

10.10.2011 - 14:28 Uhr

Also ich hab das jetzt mal geändert, dachte eigentlich nicht das es daran liegt da mir mein chef und mein Kollege zu Odbc geraten haben.

Also jetzt führt er schon mal die unteren zwei Kommandos aus das übernehmen des Datensatztes in die andere Tabelle und das anschließende löschen.
Beim ersten schritt kommt wieder keine fehlermeldung, aber der wird einfach nicht ausgeführt was mache ich falsch?


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";
            MySqlCommand DbCommand = new MySqlCommand();
            MySqlConnection DbConnection = new MySqlConnection(con);
            try
            {
                DbConnection.Open();
               DbCommand.Parameters.Add("@Ende",MySqlDbType.VarChar ).Value = dateTimePicker1.Text;
                DbCommand.Parameters.Add("@LfdNr", MySqlDbType.VarChar).Value = Nummer;
                DbCommand.Connection = DbConnection;
                DbCommand.CommandText = mysql;      //Ende einfügen    //geht nicht
                DbCommand.ExecuteNonQuery();
                DbCommand.CommandText = mysql2;     // in Archiv schreiben
                DbCommand.ExecuteNonQuery();
                DbCommand.CommandText = mysql3;     // Aus aktueller Tabelle löschen
                DbCommand.ExecuteNonQuery();

            }

liegts an der mysql syntax?
oder doch an den Datentypen? oder an was ganz anderem vll?

10.10.2011 - 11:13 Uhr

zu 1) das mag ja stimmen deswegen funktioniert er aber trotzdem noch

zu 2) Schaut zwar dumm aus, ist aber so, klar wär es besser wenn Ende Time wär und LfdNr Int aber es müsste deswegen trotzdem funktionieren

Ich habe ein extra Projekt da funktioniert alles der Code ist gleich, bis auf das das ich nicht das DataRecieved ereignis nutze, und dort funktioniert es.

10.10.2011 - 08:45 Uhr

verwendetes Datenbanksystem: MySQL

Hallo,
Ich habe ein Datarecevied Ereignis mit dem ich einen Barcode einlese und dadurch dann MySQL Kommandos ausführen will.
Der Code den ich habe läuft fehlerfrei durch und es werden auch keine Compilerfehler oder Warnungen angezeigt und man kann es auch durchdebuggen und es steht das richtige in den Variblen. Der connection string ist auch richtig.
Aber die MySQL Befehle werden einfach nicht ausgeführt da muss irgendetwas falsch sein. Hier mal der Codeausschnitt:


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();
            }

mfg