Я построения sql_insert_string
для использования в Microsoft.ApplicationBlocks.Data.SqlHelper
будет использоваться следующим образом:Вставка массив байтов в SQL Server
SqlHelper.ExecuteNonQuery(Transaction, CommandType.Text, sql_insert_string)
Когда я парить над утверждением SQL выглядит, как показано ниже:
string sql_insert_string = "Insert into images_table(image_id, image_byte_array) values ('123', System.Byte[])
Одним из значений вставки является массив байтов, как показано выше. Переменная имеет значение в массиве байтов, например, как байт [6738]. Но после того, как построено sql_insert_string
, оно приходит как System.Byte[]
. Тип столбца image_byte_array
- varbinary(max)
. База данных SQL Server 2008. Из-за этого база данных выдает следующее сообщение об ошибке:
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as \"\" or [] are not allowed. Change the alias to a valid name.
Ваш построитель строк sql просто вызывает 'ToString()' для вашей переменной типа 'byte []'. Показать метод, который создает строку запроса sql – Fabio
Вы не должны * конструировать * операторы SQL - вы должны использовать ** параметры **, чтобы избежать атак SQL-инъекций! –
'SqlParameter' не только избавляет вас от SQL Injection, но у вас не будет такой проблемы, потому что все входные значения будут правильно« преобразованы »в SqlParameters – Fabio