/// <summary> /// 更新应收帐 /// </summary> /// <param name="ysz">应收帐</param> /// <returns></returns> public static bool YSZ_UpdateForwyjqsr(int I_yszbh,DateTime date, Database db, DbTransaction trans) { DbCommand cmd = db.GetStoredProcCommand("SP_YSZ_UpdateFORwyjqsr"); db.AddInParameter(cmd, "@I_yszbh", DbType.Int32, I_yszbh); db.AddInParameter(cmd, "@D_wyjqsr", DbType.DateTime, date); return Convert.ToBoolean(db.ExecuteNonQuery(cmd, trans)); }
我这样调用存储过程,执行的时候用profile看到了该存储过程已执行,但是数据却没有更新,当我在sqlserver中执行这个存储过程的时候,数据更新了。。求大神知道
是不是你没提交事务?
求指导。。存储过程就这个,,就一个sql语句,哪里有问题。。
Create Procedure [dbo].[SP_YSZ_UpdateFORwyjqsr] @I_YSZBH int, @D_wyjqsr DATETIME AS UPDATE YSZ SET D_wyjqsr=@D_wyjqsr WHERE I_YSZBH=@I_YSZBH
@求剑: 对,看楼下的那个,那应该是你那个database对象的问题.
public static bool YSZ_UpdateForwyjqsr(int I_yszbh,DateTime date) { Database db = DatabaseFactory.CreateDatabase(DBNAME); DbCommand cmd = db.GetStoredProcCommand("SP_YSZ_UpdateFORwyjqsr"); db.AddInParameter(cmd, "@I_yszbh", DbType.Int32, I_yszbh); db.AddInParameter(cmd, "@D_wyjqsr", DbType.DateTime, date); return Convert.ToBoolean(db.ExecuteNonQuery(cmd)); }
我把方法改成这样就行了。。有些东西的概念不是很懂,请问DbTransaction这个东西是做什么用的?
@求剑: ``就是数据库事务`,你在之后后要提交DbTransaction你看这个DB是不是可以提交和回滚,
@吴瑞祥: 懂了,果然是我的这个DbTransaction没有提交,才导致没有执行成功。。谢大侠
既然profile已经看到执行了,把里面的参数提出来,在sql里面执行看结果。
在sql里执行是ok的