当我编写插入时,一切都很好。例如:
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();
如何执行更新而不是删除/插入?
感谢您的回复!
问题可能出在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)。"