none
如何知道数据库操作的状态 RRS feed

  • 问题

  • 如题,我想用一个对话框显示数据库操作成功,例如我往数据库里写数据,从哪里可以得到数据写入成功的状态?以便程序在得到所有成功的状态后,触发一个MessageBox来告诉使用者操作成功。
    现在下班中,晚上来感谢哈~~
    2010年4月19日 9:32

答案

  • 你可以对数据库操作方法返回一个值,根据返回值来判断是否操作成功


    努力+方法=成功
    2010年4月19日 9:42
  • 就我所知,使用Ado.net操作SQL server能够知道你修改了数据库中的多少行或者说对多少行数据做了多少操作,不过其未知操作是否正确。我觉得可以通过判断操作的数据量来判断是否符合预期,若符合则返回true,这样你就可以获得数据库认为(用这个词是因为我们不能真实的确定数据操作的执行是否正确)的数据操作成功的状态了。

    另外的话,你所设定的所有语句不抛出异常的被执行完毕,也可以被我们当做是数据操作成功吧。

    两种方式在ado.net操作SQL server都是可行的,其他的我自己不曾试过,也不清楚。

    2010年4月19日 9:45
  • 一般来说,通信上的问题,只要没抛异常就是成功。

    逻辑上的问题就不好说了,select还算方便,其他三种就比较难辨别了,一般都需要根据返回的“影响记录数量”来判断。比如delete,如果返回0则表示没有满足条件的记录,也就是没有删除;update也类似,insert的话一般都是1条,如果是表对表insert就比较难判断了。


    霸王
    2010年4月19日 10:15
  • 很简单啊,放事务里面,检查事务是否执行成功就行了。
    微软技术,世界动力
    2010年4月20日 8:26
    版主

全部回复

  • 你可以对数据库操作方法返回一个值,根据返回值来判断是否操作成功


    努力+方法=成功
    2010年4月19日 9:42
  • 就我所知,使用Ado.net操作SQL server能够知道你修改了数据库中的多少行或者说对多少行数据做了多少操作,不过其未知操作是否正确。我觉得可以通过判断操作的数据量来判断是否符合预期,若符合则返回true,这样你就可以获得数据库认为(用这个词是因为我们不能真实的确定数据操作的执行是否正确)的数据操作成功的状态了。

    另外的话,你所设定的所有语句不抛出异常的被执行完毕,也可以被我们当做是数据操作成功吧。

    两种方式在ado.net操作SQL server都是可行的,其他的我自己不曾试过,也不清楚。

    2010年4月19日 9:45
  • 对数据库的操作,你可以参照SQLHELPER类

    http://www.cnblogs.com/yangpu/archive/2009/06/06/1497687.html


    努力+方法=成功
    2010年4月19日 9:48
  • 一般来说,通信上的问题,只要没抛异常就是成功。

    逻辑上的问题就不好说了,select还算方便,其他三种就比较难辨别了,一般都需要根据返回的“影响记录数量”来判断。比如delete,如果返回0则表示没有满足条件的记录,也就是没有删除;update也类似,insert的话一般都是1条,如果是表对表insert就比较难判断了。


    霸王
    2010年4月19日 10:15
  • 感谢开心、络绎、Jimt200010的回答和指导。昨晚有事没来得及感谢大家。

    我想用SQL查询新添加的行是否存在来确认是否添加成功,请问这样可行吗?我是说不会浪费机器资源吗?


    新手学习,再学习......
    2010年4月20日 1:50
  • 感谢开心、络绎、Jimt200010的回答和指导。昨晚有事没来得及感谢大家。

    我想用SQL查询新添加的行是否存在来确认是否添加成功,请问这样可行吗?我是说不会浪费机器资源吗?


    新手学习,再学习......


    你所说的这个可行,至于效率嘛就不敢苟同了。

    另外,对于add操作你可以如此来确认是否成功,对于update呢?或者对于add一个array呢?你所说的情形是可以的,只是仅仅能够解决你所说的而已。

    http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.executenonquery(VS.80).aspx

    这是ExecuteNonQuery方法,可以了解下。 

    2010年4月20日 5:27
  • 很简单啊,放事务里面,检查事务是否执行成功就行了。
    微软技术,世界动力
    2010年4月20日 8:26
    版主
  • 多谢大家的帮助,谢谢哈
    新手学习,再学习......
    2010年4月23日 1:57