调用MSSQL的存储过程出现有关问题了

调用MSSQL的存储过程出现问题了 - .NET技术 / C#
SQL code

create 
-----alter 
proc AddNewAlm( @DID int ,
    @UID int , @ATID int , @P1 int ,@P2 int, @SCIP nvarchar(20), @ATime datetime  )
    --returns int 
as
begin
    declare @IsHas int;
    declare    @AID int;
    set @AID = 0;
      update AlmInfoTmp set UID=UID where DID=@DID and UID=@UID and ATID=@ATID and ATPara1 = @P1 and ATPara2=@P2 ; 
 
    if  @@rowcount = 0
        begin
            insert into AlmInfo( DID, UID, ATID, ATPara1, ATPara2, SCIP, ATime)        
                        values( @DID, @UID, @ATID, @P1, @P2, @SCIP, @ATime ) ;
            if  @@rowcount > 0   
                insert into AlmInfoTmp( DID, UID, ATID, ATPara1, ATPara2, SCIP, ATime)        
                        values( @DID, @UID, @ATID, @P1, @P2, @SCIP, @ATime );
               
                set @AID = (select top 1 ID from AlmInfo where DID=@DID and UID=@UID and ATID=@ATID order by ATime DESC) ;
                    
        end
            
    select @AID as ID;   
end


上面呢是存储过程内容,是插入一条数据,然后返回这条数据的ID值

经测试,VC++怎么调用都不行,结果返回不了,用C#测试,结果可以得到,不知道哪里出现了问题

C/C++ code
CString strSQL;
        strSQL.Format("exec dbo.AddNewAlm  @DID=%d, @UID=%d,@ATID=%d,@P1=%d,@P2=%d,@SCIP='%s' ,@ATime='%s'", lSID, lUID, nType,  p1, p2, scip, time);
         if( pRS->Open(strSQL, adCmdText ) )
            ///;//adCmdStoredProc );
         {
            long ll = 0;
            ll = pRS->GetRecordCount();
                if( pRS->GetCollect( (long)0, ll ) )//这里返回异常
                {
                    lAID = ll;
                }
             
         }


C# code

 public SqlDataReader GetResult(String sql)
    {
        try
        {
            comm.CommandText = sql;
            comm.CommandType = System.Data.CommandType.Text;
            return comm.ExecuteReader();
        }
        catch { return null; }
    }
 DBMng m = new DBMng();
        if (m.InitConn())
        {
          SqlDataReader dr =   m.GetResult("exec dbo.AddNewAlm  @DID=13, @UID=1,@ATID=17,@P1=0,@P2=0,@SCIP='192.168.3.151' ,@ATime='2010-04-19 17:59:28'");
          if (dr != null && dr.Read())
          {
              Response.Write(dr[0]);//这里输出正常的结果
          }
        }




------解决方案--------------------
不是很熟,帮忙顶
------解决方案--------------------
友情帮顶,友情帮顶
------解决方案--------------------
额,这个是C#的,我帮你转到C#区去。
catch { return null; }
这里最好不要仅仅是返回,你可以打印错误信息看下或许就知道错误原因了。