Ich bin mir nicht sicher, wie Ihre execSQL()
Methode aufgebaut ist, aber es ist nicht normal oder überhaupt in Ordnung, variable Daten direkt in eine SQL-Abfragezeichenfolge zu ersetzen. Das ist ein guter Weg, um Ihr Programm zu hacken. Stattdessen benötigen Sie einen Mechanismus, um die Daten zu akzeptieren und separat an den Server zu senden. Das sieht oft so etwas wie dieses:
Public Sub execSQL(ByVal SQL As String, Optional ByVal ParamArray QueryParameters() As MySqlParameter)
Using cn As New MySqlConnection("connection string here"), _
cmd As New MySqlCommand(SQL, cn)
If QueryParameters IsNot Nothing Then
For Each p As MySqlParameter In QueryParameters
'This does NOT EVER do string manipulation to set the data into the query
' Instead, it's sent to the server in a separate data section, where the variables are setup.
' In this way, data stays separate from code, and any possibility of sql injection is prevented.
cmd.Parameters.Add(p)
Next
End If
cn.Open()
cmd.ExecuteNonQuery()
End Using
End Sub
und dann rufen Sie es wie folgt aus:
Public Sub Code(ByVal dte As DateTime)
Dim strSQl As String = "Update tblTenant Set dte = @dte blablalbla"
Dim dteParam As New MySqlParameter("@dte", MySqlDbType.DateTime)
dteParam.Value = dte
Me._Inst.execSQL(strSQl, dteParam)
End Sub
Ich habe viele Fälle gesehen, wo Schaltparameter abfragen auch eine ärgerliche Formatierung oder Syntax Problem behoben , genug, so glaube ich, dass die Verwendung von Abfrageparametern sehr wahrscheinlich das Problem lösen wird, das Ihre Frage ausgelöst hat.
Was ist der Säulentyp? –
Dies ist verrückt anfällig für SQL-Injektionen. –
Übergeben Sie die DateTime als DateTime mit SQL-Parametern. Dieser Code übergibt Text und lässt den DB-Provider die Dinge abarbeiten. – Plutonix