为什么在VarBinary上的Update操作是插入新行而不是更新



我试图用一个新的值更新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尽可能多地隔离,看看实际发生了什么

最新更新