使用c#更新sql server ' varbinary '列的问题

本文关键字:问题 varbinary server 使用 更新 sql | 更新日期: 2023-09-27 18:04:45

当我编写插入时,一切都很好。例如:

dataCommand.CommandText = "use mydb; INSERT INTO mytable VALUES(@binaryvalue);
dataCommand.Parameters.Add("@binaryvalue", SqlDbType.VarBinary, 256).Value = mycard;
dataCommand.ExecuteNonQuery();

然而,如果我尝试更新,它将不起作用。我使用了。write方法,但是它不能:

dataCommand.CommandText = "use mydb; update mytable set mycolumn .Write(@binaryvalue, 0, NULL) where myid = " + wid;
dataCommand.Parameters.Add("@binaryvalue", SqlDbType.VarBinary, 256).Value = mycard;
dataCommand.ExecuteNonQuery();

如何执行更新而不是删除/插入?

感谢您的回复!

使用c#更新sql server ' varbinary '列的问题

问题可能出在NULL:

.WRITE (expression,@Offset,@Length)         (reference)
.Write(@binaryvalue, 0, NULL)               (your code)

试着用你的内容长度代替NULL

@Length是列中section的长度,从@Offset开始,由expression代替。@Length是bigint,不能是负数。如果@Length为NULL,更新操作将删除@Offset到column_name值末尾的所有数据。

更多信息在这里:http://msdn.microsoft.com/en-us/library/ms177523.aspx

表中二进制列的确切类型是什么?它是VARBINARY(MAX)吗?如果没有,请尝试一下,看看它是否有效。根据文档:

"使用。write (expression, @Offset, @Length)子句对varchar(max), nvarchar(max)和varbinary(max)数据类型执行部分或全部更新"

"要对其他字符或二进制数据类型实现。write的相同功能,请使用STUFF (Transact-SQL)。"