Перенос образа между базами данных SQL Server с помощью UPDATE

Изображение было сохранено на другом сервере с использованием image. Я сделал запрос, чтобы получить изображение, и теперь я пытаюсь поместить его в другую таблицу, используя и update запрос (также установленный на image). Я получаю сообщение об ошибке «Объекты ByteArray не могут быть преобразованы в строки».

<cfquery name="updateCuppms" datasource="db_PerformanceApp">
    UPDATE CUPPMS 
    SET    phoneNumber ='#GetUser.telephoneNumber#',
           email = '#GetUser.mail#'
          <cfif isdefined(#GetPic.Face#) >
             , picture = <cfqueryparam cfsqltype="cf_sql_blob" value="#GetPic.Face#">
          </cfif>
    WHERE  wken = #getEmployees.wken#
 </cfquery>

person Jeffha77    schedule 21.01.2014    source источник
comment
Вы используете SQL Server 2000? Если нет, то почему вы используете IMAGE (устарело) вместо VARBINARY(MAX) (не устарело, с ним гораздо проще работать, особенно в таких контекстах)>   -  person Aaron Bertrand    schedule 22.01.2014
comment
FWIW, причина исходной ошибки в том, что вы неправильно используете isDefined. IsDefined ожидает имя переменной, т.е. простую строку. Используя знаки решетки вокруг переменной #GetPic.Face#, вы вместо этого передаете ее значение, которое является двоичным. Отсюда ошибка. Теперь, сказав, что .. столбцы запроса всегда существуют. Так что IsDefined в любом случае не подходит для использования. Как вы в конечном итоге поняли, IsNull() - это путь :)   -  person Leigh    schedule 22.01.2014


Ответы (1)


Это был <cfif isdefined(#GetPic.Face#) >, который выдавал мне ошибку, поэтому измените оператор if на приведенный ниже, и теперь он работает.

<cfif not isnull(GetPic.Face)>
  ,picture = <cfqueryparam cfsqltype="cf_sql_blob" value="#GetPic.Face#">
</cfif>
person Jeffha77    schedule 22.01.2014
comment
К вашему сведению - вам не нужно использовать # в своем выражении if. я обновил ваш ответ - person Matt Busche; 22.01.2014
comment
Обязательно используйте cfqueryparam для всех параметров вашего запроса. Как для защиты базы данных от SQL-инъекций, так и для производительности. - person Leigh; 22.01.2014