我试图用一个新的值更新varbinary(max)列,这也是varbinary(max)最终的结果是,我得到一个新的行,而不是更新的行。
CREATE proc Proc_UpdateFile
@FileName varchar(50),
@OldFileName varchar(50),
@GuidNo varchar(50),
@Img varbinary(max)
as
update tbl_BazImages set ImgName=@FileName , img = @Img where GuidNo=@GuidNo and ImgName=@OldFileName
CodeBehid:
public bool UpdateFile(Byte[] bytes, string filename, string guidno,string OldFileName)
{
SqlConnection con = new SqlConnection(claims_expense);
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Proc_UpdateFile";
cmd.Parameters.AddWithValue("@GuidNo", guidno);
cmd.Parameters.AddWithValue("@FileName", filename);
cmd.Parameters.AddWithValue("@Img", bytes);
cmd.Parameters.AddWithValue("@OldFileName", OldFileName);
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
eLog.WriteErrorLog(ex, "dboperation.cs", "UpdateFile");
return false;
}
finally { con.Close(); }
return true;
}
如注释所示,您所展示的代码不能插入记录。
系统中正在发生一些您没有注意到的事情。我建议使用SQL Server Profiler尽可能多地隔离,看看实际发生了什么