在ASP.NET表单中,我有一个ListView控件,其中一列是Varbinaty(max)
值。
问题在于我尝试处理此值。
选择后:
SELECT CODICE_ARTICOLO, DESCRIZIONE, UM, FOTO, TIPO_ART FROM TBL_ARTICOLI
其中FOTO
为Varbinary(max)
。
这是UPDATE
命令:
UpdateCommand="UPDATE [TBL_ARTICOLI] SET [DESCRIZIONE] = @DESCRIZIONE, [UM] = @UM, [FOTO] = @FOTO, [TIPO_ART] = @TIPO_ART WHERE [CODICE_ARTICOLO] = @CODICE_ARTICOLO">
<UpdateParameters>
<asp:Parameter Name="DESCRIZIONE" Type="String" />
<asp:Parameter Name="UM" Type="String" />
<asp:Parameter Name="FOTO" Type="Object" />
<asp:Parameter Name="TIPO_ART" Type="String" />
<asp:Parameter Name="CODICE_ARTICOLO" Type="String" />
</UpdateParameters>
当我尝试更新项目时,我收到以下错误:
* La conversione implicita del tipo di dati da sql_variant a varbinary(max)nonèrelicateita。每个eseguire la查询,utilizzare la funzione CONVERT。*
在英语中,它告诉我它无法从sql_variant
转换为varbynary(max)
,但如果我正在使用这样的转换:
[FOTO] = CAST(@FOTO AS VARBINARY(MAX))
我收到以下错误:
I dati di tipo string o binary verrebbero troncati。 L'istruzioneè stata interrotta。
因此,字符串或二进制文件将被截断,命令被中断。
我尝试在十六进制字符串中转换varbinary
,但每次我收到最后一个错误。
有人可以帮助我吗?
谢谢
Piercarlo
答案 0 :(得分:2)
尝试使用SqlBinary作为类型? (不确定,也无法访问开发机器atm。)
<asp:Parameter Name="FOTO" Type="SqlBinary" />
答案 1 :(得分:0)
我在这里建议的是,尝试在sql server中创建一个sproc来更新varbinary字段。从asp.net只需将参数传递给sproc,对于varbinary字段只需使用asp.net中的字符串数据类型。我的意思是将值赋给字符串数据类型并将其传递给sproc。
现在,sproc将更新表中的必填字段。