Syntaxfehler in UPDATE-Anweisung

Was ist falsch an diesem code? Ich habe alles getan, aber ich bekomme immer noch

Syntaxfehler in UPDATE-Anweisung

Bitte helfen. Vielen Dank im Voraus.

OleDbConnection conn = default(OleDbConnection);

OleDbCommand cmd = default(OleDbCommand);

conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DemoDB.accdb");

string sql = "UPDATE APPOINTMENTS Set ([CustomerID]=" + txtCid.Text + ", [DateTime]= " + dateTimePicker5.Text + ", [Time]=" + txtNewTime.Text + " WHERE [CustomerID]=" + txtCid.Text + ");";

conn.Open();

cmd = new OleDbCommand(sql, conn);

cmd.ExecuteNonQuery();//execute the sql command

MessageBox.Show("Appointment Changed Successful");

//close the connectionstring
conn.Close();



3 Replies
  1. 2

    Ich schlage vor, Sie eine parametrisierte Abfrage verwenden, anstatt für das, was Sie derzeit verwenden. das wird das problem lösen und Ihnen auch helfen, zu verhindern, dass SQL-Injection:

    Hier ist ein Beispiel:

    string sql = "UPDATE APPOINTMENTS Set [CustomerID][email protected],[DateTime][email protected],[Time][email protected] WHERE [CustomerID][email protected]";
    using (OleDbConnection  cn = new OleDbConnection("Your connection string here"))
            {
                using (OleDbCommand cmd = new OleDbCommand(sql,cn))
                {
                    cmd.Parameters.Add("@id", OleDbType .VarChar, 50).Value = "Some value Here";
                    cmd.Parameters.Add("@dateTime", OleDbType.Date).Value = "Some value Here";
                    cmd.Parameters.Add("@time", OleDbType.DBTime, 50).Value = "Some value Here";
                    cmd.Parameters.Add("@customerid", OleDbType .VarChar, 50).Value = "Some value Here";
                    //execute command here
                }
            }
    • Du meinst OleDbType statt SqlDbType denke ich 🙂
    • Genialer Ort, danke für die Anregung. ich habe aktualisiert die Antwort
    • ich bin mit OLEDBtype nicht sqltype und ich habe einige Daten gibt. ich kann nicht die übertragung der sqldbtype.
    • Blick auf die updates; ich habe es geändert haben, um OleDb..
    • Fehler 3 kann Nicht zugewiesen werden, um Sie “ cmd “ ein, weil es ist eine ‚mit variable‘ C:\Users\Abdala\Documents\Visual Studio 2013\Projects\ @un-glücklichen
  2. 0

    Als minimum, müssen Sie die richtige string-Ausdrücke für Datum und Uhrzeit:

    string sql = "UPDATE APPOINTMENTS Set ([CustomerID]=" + txtCid.Text + ", [DateTime]= #" + dateTimePicker5.Text + "#, [Time]=#" + txtNewTime.Text + "# WHERE [CustomerID]=" + txtCid.Text + ");";

    Und es kann reduziert werden zu:

    string sql = "UPDATE APPOINTMENTS Set ([DateTime]= #" + dateTimePicker5.Text + "#, [Time]=#" + txtNewTime.Text + "# WHERE [CustomerID]=" + txtCid.Text + ");";

    Dies erfordert jedoch, dass Ihr Datum und Zeit Text sind im richtigen format. Wenn nicht, müssen Sie zunächst analysieren, um DateTime, dann verwenden Sie Format oder ToString zu erstellen, den text zu verketten.

    Oder Parameter verwenden.

  3. -1

    ändern Sie update-Abfrage
    verwenden Sie diese

    string sql = "UPDATE APPOINTMENTS Set [CustomerID]=" + txtCid.Text + ", [DateTime]= " + dateTimePicker5.Text + ", [Time]=" + txtNewTime.Text + " WHERE [CustomerID]=" + txtCid.Text + " ";

    Überprüfen Sie auch Ihren Datentyp DateTime-Spalte

    • Aber natürlich, wir empfehlen nicht, die string-Verkettungen, die auf sql-Abfragen, richtig? Wir empfehlen Ihnen die Verwendung von vorbereiteten Anweisungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.