2012-06-28 1 views
4

Я пытаюсь запустить запрос вставки, но я получаю ошибку ниже. Как передать значения в мой оператор insert? Значение поступает из массива, а тип столбца [cNotes] - varchar NULL.Ошибка запроса INSERT: неявное преобразование из типа данных varchar в varbinary недопустимо. Используйте функцию CONVERT для запуска этого запроса.

Заранее спасибо.

Ошибка:

 Error Executing Database Query. 
     [Macromedia][SQLServer JDBC Driver][SQLServer]Implicit conversion from data type varchar to varbinary is not allowed. Use the CONVERT function to run this query. 

     The error occurred in C:\Inetpub\wwwroot\Components\Assessment.cfc: line 510 
     Called from C:\Inetpub\wwwroot\Components\Assessment.cfc: line 440 

      508 :      ,NULL 
      509 :     </cfif> 
      510 :     ,'#arguments.notes#') 
      511 :  </cfquery> 
      512 :  </cffunction> 



      -------------------------------------------------------------------------------- 

      SQL INSERT INTO AssessmentToolDetail(iAssessmentToolMaster_ID ,iServiceList_ID ,cRowStartUser_ID ,Service_text ,cNotes) Values(251069 ,3592 ,NULL ,'y ' ,'') 
      DATASOURCE TIPS4 
      VENDORERRORCODE 257 
      SQLSTATE HY000 ' 

CFC функция:

<cffunction name="AddService" access="public" returntype="void" output="false"> 
    <cfargument name="ServiceList" type="Components.ServiceList" required="true"> 
    <cfargument name="notes" type="string" required="false" default=""> 
    <cfargument name="serviceText" type="string" required="false" default="">  

    <cfquery name="AddServiceListQuery" datasource="#variables.dsn#"> 
     INSERT INTO AssessmentToolDetail (
       iAssessmentToolMaster_ID 
       , iServiceList_ID 
       , cRowStartUser_ID 
       , Service_text 
       , cNotes) 
     VALUES (
       #variables.id# 
       ,#ServiceList.GetId()#    
       <cfif variables.rowStartUserId neq ""> 
        , '#variables.rowStartUserId#' 
       <cfelse> 
        , NULL 
       </cfif> 
       <cfif ListFirst(Arguments.serviceText,'_') EQ ServiceList.GetId() > 
        , '#Left(ListLast(Arguments.serviceText,'_'),1)# ' 
       <cfelse> 
        , NULL 
       </cfif> 
       , '#arguments.notes#' 
      ) 
    </cfquery> 
</cffunction> 
+2

В качестве стороннего использования вы должны использовать 'cfqueryparam', чтобы помочь защитить запросы от SQL-инъекций (а также по соображениям производительности). – Leigh

ответ

4

ошибка говорит, что вы пытаетесь вставить строку в столбец с форматом бинарного хранения и он не может сделать преобразование неявно.

Убедитесь, что cNotes столбец в таблице AssessmentToolDetail имеет тип данных varchar(n) или nvarchar(n) и не varbinary(n).

+0

его [cNotes] varchar NULL, – TGR

+0

Сообщение об ошибке выплевывает SQL, который он пытался запустить ... это выглядит хорошо для меня, но что вы получите, если вы запустите этот SQL в SQL Server Management Studio? –

+0

Adam - та же ошибка: Msg 257, уровень 16, состояние 3, строка 1 Неявное преобразование из типа данных varchar в varbinary не допускается. Используйте функцию CONVERT для запуска этого запроса. – TGR

Смежные вопросы

 Смежные вопросы