SQL параметризованный запрос вставки - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь использовать параметризацию для предотвращения внедрения SQL-кода в одно из текстовых полей в HMI, с которым я работаю.

Много раз искал решение, которое я собрал, в зависимости от того, какой там синтаксис SQLЯ могу использовать либо ?, либо @, чтобы сообщить системе, что это параметр, но они оба выдают ошибку.

Dim DBCommand
Dim DBRecordSet 
Dim Connection
Dim sqlString   

Set DBRecordSet = CreateObject("ADODB.Recordset") 
Set DBCommand = CreateObject("ADODB.Command")
Set Connection = GetDBConnection("Test")

sqlString = "Insert into [WorkCommentLog] (Worklog_WorkID, Comment, 
InsertTime, WrittenBy) values" &_
"('"& WorkID &"' , @Comm , GetDate() , '" & User.Value &"');"

DBCommand.Parameters.Append DBCommand.CreateParameter ("@Comm", 
adVarChar, adParamInput, 255, WinCC_Comment.Value)

DBCommand.CommandText = sqlString
DBCommand.Execute(adExecuteNoRecords)

Connection.Close
Dim DBCommand
Dim DBRecordSet 
Dim Connection
Dim sqlString   

Set DBRecordSet = CreateObject("ADODB.Recordset") 
Set DBCommand = CreateObject("ADODB.Command")
Set Connection = GetDBConnection("Test")

sqlString = "Insert into [WorkCommentLog] (Worklog_WorkID, Comment, InsertTime, WrittenBy) values" &_
"('"& WorkID &"' , ? , GetDate() , '" & User.Value &"');"

DBCommand.Parameters.Append DBCommand.CreateParameter ("Comment", adVarChar, adParamInput, 255, WinCC_Comment.Value)
DBCommand.CommandText = sqlString
DBCommand.Execute(adExecuteNoRecords)

Connection.Close

Первый фрагмент кода выдает эту ошибку:

Необходимо объявить скалярную переменную "@Com"

, пока второй фрагмент кода выдает эту ошибку:

Не задано значение для одного или несколькихобязательные параметры

...