Вставка файла в mssql с помощью dapper
Есть ли способ вставить файл без использования параметров?
Я создаю строку, которая обновляет и вставляет данные в несколько таблиц одновременно, если что-то не удается, все изменения отклоняются.
Это мой код.:
if (Ordre.Attatchments.Where(x => x.SaveState == false).Count() > 0) { SqlSaveString.Append("INSERT INTO dbo.SaleAttatchments ([RefUid], [FilePath], [FileName], [FileType], [FileSize],[File], [AttatchInvoice]) VALUES"); foreach (AttatchmentModel doc in Ordre.Attatchments.Where(x => x.SaveState == false).ToList()) { if (LineCount > 0) SqlSaveString.Append(","); SqlSaveString.Append($"('{Ordre.SaleUid}', '{doc.FilePath}', '{doc.FileName}', '{doc.FileType}', {doc.FileSize}, {doc.File}, {doc.AttatchInvoice.BoolToTinyInt()})"); } SqlSaveString.Append(";"); }
Что я уже пробовал:
Этот код работает, но не то, что я ищу.
public void SaveFile(AttatchmentModel parameters, string connectionStringName) { string connectionString = GetConnectionString(connectionStringName); using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(connectionString)) { var sql = "UPDATE dbo.SaleAttatchments SET[File] = @FileData WHERE RefUid = @Id And FileName = @FileName;"; var dParams = new DynamicParameters(); dParams.Add("@Id", parameters.RefUID, DbType.String); dParams.Add("@FileData", parameters.File, DbType.Binary); dParams.Add("@FileName", parameters.FileName, DbType.String); connection.Execute(sql, dParams); } }
Richard Deeming
"без использования параметров"
Почему? Вам нравится, что ваша база данных полностью уничтожена каждым случайным скриптом-детишкой на планете?!
НИКОГДА используйте конкатенацию строк / string.Format
/ интерполированные строки для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]