0

在 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 一个 varbinary(max) 非同意。Per eseguire la query, utilizzare la funzione CONVERT.*

用英语告诉我它不能从sql_variantto转换varbynary(max),但是如果我使用这样的转换:

[FOTO] = CAST(@FOTO AS VARBINARY(MAX))

我收到以下错误:

I dati di tipo string o binary verrebbero troncati。L'istruzione è stata interrotta。

所以字符串或二进制将被截断命令被中断。

我试图转换varbinary十六进制字符串,但每次我得到最后一个错误。

有人可以帮助我吗?

谢谢

皮尔卡洛

4

2 回答 2

2

尝试使用 SqlBinary 作为类型?(不确定,也无法访问开发机器 atm。)

<asp:Parameter Name="FOTO" Type="SqlBinary" />
于 2012-09-24T07:04:48.860 回答
0

我在这里建议的是,尝试在 sql server 中创建一个 sproc 来更新 varbinary 字段。从 asp.net 只需将参数传递给 sproc,而对于 varbinary 字段,只需使用 asp.net 中的字符串数据类型。我的意思是分配值到字符串数据类型并将其传递给存储过程。

现在 sproc 将更新表中的必填字段。

于 2012-09-24T07:11:34.040 回答