你用输出参数应该可以获得受影响的UPDATE、INSERT或DELETE语句的行数吧,在存储过程里将那个输出参数赋值,然后用sqlParameter.Direction=ParameterDirection.Output

解决方案 »

  1.   

    知道输出参数也知道return,但这是书上写的一个基类,wrox出版的,想不通为什么他们能这样写,不知道是不是我的数据库设置有问题?
    protected int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected )
    {
    try
    {
    int result;

    DBOpen();
    SqlCommand command = BuildIntCommand( storedProcName, parameters );
    rowsAffected = command.ExecuteNonQuery();
    result = (int)command.Parameters["ReturnValue"].Value;
    DBClose();
    return result;
    }
    catch(Exception Ex)
    {
    WriteLog(storedProcName,Ex);
    rowsAffected=-1;
    return -1;
    }
    }
      

  2.   

    你应该先看一下BuildIntCommand这个函数
      

  3.   

    在你的sql语句后加上SELECT @@IDENTITY as id
      

  4.   

    Wrox的书最烂了
    好多代码都有问题
    怪不得快要破产了!
      

  5.   

    Wrox的书还算不错的了,出问题的代码估计是因为写书时还是Beta版吧,怪不得出版社
      

  6.   

    那段代码怎么也可以返回一个值呀
    一种可能是返回存储过程中最后一个update/inser/dele语句执行错误。
    还有存储过程如果没使用return或out参数,那么返回0是标志执行成功,返回-1执行失败
      

  7.   

    return是可以返回的,这没问题,但是受影响的行数不能返回啊,哎郁闷,书写错了,误人子弟啊!