SQL-Abfrageerrors: Falsche Syntax In der Nähe von "#"?

Wenn ich versuche, diese SQL-Abfrage auszuführen:

savInto.CommandText = "update onCommands set warnDate =#" & movDate.Value.ToString("MM/dd/yyyy") & "#,updateDate =#" & Date.Now.ToShortDateString & "#,transportCompany ='" & Trim(Company.Text) & "' where ID =" & moveID 

Ich bekomme diesen Fehler:

 Incorrect syntax near '#' 

Nun ist das Hauptproblem, dass Sie versuchen, den Parameter als Teil des SQL selbst zu liefern. Zwar gibt es Möglichkeiten, das zu tun (verwenden Sie einen Apostroph statt # ), ist es in der Regel eine schlechte Idee:

  • Es lädt SQL-Injection-Angriffe ein, wenn er mit willkürlichen Strings verwendet wird
  • Es macht es schwieriger, den Code zu lesen
  • Es führt unnötige String-Conversions ein

Stattdessen sollten Sie parametrisiertes SQL verwenden und den Wert für den Parameter angeben. Etwas wie:

 savInto.CommandText = "update onCommands set warnDate = @warnDate" & ", updateDate = @updateDate, transportCompany = @transportCompany" & " where ID=@moveID" savInto.Parameters.Add("@warnDate", SqlDbType.DateTime).Value = movDate savInto.Parameters.Add("@updateDate", SqlDbType.DateTime).Value = Date.Now savInto.Parameters.Add("@transportCompany", SqlDbType.NVarChar).Value = Trim(Company.Text) savInto.Parameters.Add("@moveID", SqlDbType.NVarChar).Value = moveID 

Warum benutzt du # character? Welche database verwenden Sie (SQL server, Oracle, MySQL …)

Versuche dies:

 savInto.CommandText = "update onCommands set warnDate ='" & movDate.Value.ToString("MM/dd/yyyy") & "',updateDate ='" & Date.Now.ToShortDateString & "',transportCompany ='" & Trim(Company.Text) & "' where ID =" & moveID