用的是SQL数据库的存储过程
然后调用ExecuteNonQuery()方法时 返回值是-1
但是对数据库的操作却生效了
为何啊? 求解? 急

解决方案 »

  1.   

    对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。
      

  2.   

    执行的是更新 update
    但是对数据库的更新操作成功了, 但是返回值是-1 
      

  3.   

    你把你的SQL丢到数据库里面去看能不能执行先
      

  4.   

    把存储过程的SQL语句在数据库里执行 就是(1 行受影响)
    ************************
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    --region [dbo].[usp_UpdateRoomType]------------------------------------------------------------------------------------------------------------------------
    -- Generated By:   haifeng.zhang using CodeSmith 3.2.6.887
    -- Template:       StoredProcedures.cst
    -- Procedure Name: [dbo].[usp_UpdateRoomType]
    -- Date Generated: 2007年9月15日
    ------------------------------------------------------------------------------------------------------------------------ALTER PROCEDURE [dbo].[usp_UpdateRoomType]
    @TypeID int,
    @TypeName nvarchar(50),
    @TypePrice money,
    @AddBedPrice money,
    @IsAddBed nchar(10),
    @Re nvarchar(255)
    ASSET NOCOUNT ONUPDATE [dbo].[RoomType] SET
    [TypeName] = @TypeName,
    [TypePrice] = @TypePrice,
    [AddBedPrice] = @AddBedPrice,
    [IsAddBed] = @IsAddBed,
    [Re]=@Re
    WHERE
    [TypeID] = @TypeID--endregion************************
    **中间的是存存储过程 没有其他的 
      

  5.   

    为什么 SqlCommand.ExecuteNonQuery() 方法返回 -1?不知道大家在使用ExecuteNonQuery方法的时候有没有碰到过返回-1的情况。ExecuteNonQuery方法返回增删改时,受影响的行数。那怎么会返回-1呢?查了一些资料后终于得知返回-1的原因。在进行增删改时,数据库能为我们统计受影响行数的前提条件是,关闭NOCOUNT,即 Set nocount off。默认情况下,它是关闭的,即我们是可以得到受影响的行数的。你可以测试如下(加与不加set nocount on是有区别的):SqlCommand cmd = new SqlCommand("set nocount on; insert into test values ('test')", con);
    int rows = cmd.ExecuteNonQuery();
    有的人就说了,我仅仅是调用一个简单的存储过程,怎么还是返回-1呢?这个是由于Visual Studio引起的。我们在Visual Studio中写了一个存储过程时,它会被默认加上set nocount on。这样就导致了调用存储过程时始终得不到影响的行数,而返回-1。不过我在Visual Studio 2008 Team Suit中测试了下,这个问题不存在了。可能以前的版本有这样的问题吧(未测试),碰到这种情况就多留意些。
      

  6.   

    存储过程中
    SET NOCOUNT ON --不返回影响行数这句去掉
      

  7.   

    对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,若执行成功则返回值为 -1。如果发生回滚,返回值也为 -1。