update 表名
   set ...
where
   条件。
条件用 UserName = @UserName
行吗,一定要用主键判断吗?

解决方案 »

  1.   

    if exists(SELECT ID FROM ReplyLeaveWord WHERE MessageID =@MessageID)
    update ReplyLeaveWord
    set
    ReplyContent = @ReplyContent
    where
    MessageID = @MessageID
    else
    insert into ReplyLeaveWord
    (
    ReplyContent,
    LeaveTime,
    MessageID
    )
    values
    (
    @ReplyContent,
    getdate(),
    @MessageID
    )
    if @@error = 0 and @@rowcount > 0 
    set @returnVal = 1;
    else
    set @returnVal = -1;这个存储过程,添加就能用,可更新就不成功。
      

  2.   

    exists(SELECT ID FROM ReplyLeaveWord WHERE MessageID =@MessageID) 
    已经存在了,表中有的。网页中也能显示。
      

  3.   

    这个存储过程,添加就能用,可更新就不成功。MessageID 条件列不可更新
      

  4.   

    你在查询分析器中看看是否有输出'进入Update了' 
    if exists(SELECT ID FROM ReplyLeaveWord WHERE MessageID =@MessageID) 
    Begin
    Print '进入Update了' --
    update ReplyLeaveWord 
    set 
    ReplyContent = @ReplyContent 
    where 
    MessageID = @MessageID 
    End
    else 
    insert into ReplyLeaveWord 

    ReplyContent, 
    LeaveTime, 
    MessageID 

    values 

    @ReplyContent, 
    getdate(), 
    @MessageID 

    if @@error = 0 and @@rowcount > 0 
    set @returnVal = 1; 
    else 
    set @returnVal = -1; 
      

  5.   

    谢谢大家.问题已经找到了,是网面没有加上反调造成的.
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            { 
            
            }
        }