调用MSSQL的存储过程出现有关问题了
调用MSSQL的存储过程出现问题了 - .NET技术 / C#
上面呢是存储过程内容,是插入一条数据,然后返回这条数据的ID值
经测试,VC++怎么调用都不行,结果返回不了,用C#测试,结果可以得到,不知道哪里出现了问题
------解决方案--------------------
不是很熟,帮忙顶
------解决方案--------------------
友情帮顶,友情帮顶
------解决方案--------------------
额,这个是C#的,我帮你转到C#区去。
catch { return null; }
这里最好不要仅仅是返回,你可以打印错误信息看下或许就知道错误原因了。
- 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; }
这里最好不要仅仅是返回,你可以打印错误信息看下或许就知道错误原因了。