积极答复者
如何知道数据库操作的状态

问题
答案
-
-
就我所知,使用Ado.net操作SQL server能够知道你修改了数据库中的多少行或者说对多少行数据做了多少操作,不过其未知操作是否正确。我觉得可以通过判断操作的数据量来判断是否符合预期,若符合则返回true,这样你就可以获得数据库认为(用这个词是因为我们不能真实的确定数据操作的执行是否正确)的数据操作成功的状态了。
另外的话,你所设定的所有语句不抛出异常的被执行完毕,也可以被我们当做是数据操作成功吧。
两种方式在ado.net操作SQL server都是可行的,其他的我自己不曾试过,也不清楚。
- 已标记为答案 KeFang Chen 2010年4月21日 1:51
-
一般来说,通信上的问题,只要没抛异常就是成功。
逻辑上的问题就不好说了,select还算方便,其他三种就比较难辨别了,一般都需要根据返回的“影响记录数量”来判断。比如delete,如果返回0则表示没有满足条件的记录,也就是没有删除;update也类似,insert的话一般都是1条,如果是表对表insert就比较难判断了。
霸王- 已标记为答案 KeFang Chen 2010年4月21日 1:52
-
全部回复
-
-
就我所知,使用Ado.net操作SQL server能够知道你修改了数据库中的多少行或者说对多少行数据做了多少操作,不过其未知操作是否正确。我觉得可以通过判断操作的数据量来判断是否符合预期,若符合则返回true,这样你就可以获得数据库认为(用这个词是因为我们不能真实的确定数据操作的执行是否正确)的数据操作成功的状态了。
另外的话,你所设定的所有语句不抛出异常的被执行完毕,也可以被我们当做是数据操作成功吧。
两种方式在ado.net操作SQL server都是可行的,其他的我自己不曾试过,也不清楚。
- 已标记为答案 KeFang Chen 2010年4月21日 1:51
-
-
一般来说,通信上的问题,只要没抛异常就是成功。
逻辑上的问题就不好说了,select还算方便,其他三种就比较难辨别了,一般都需要根据返回的“影响记录数量”来判断。比如delete,如果返回0则表示没有满足条件的记录,也就是没有删除;update也类似,insert的话一般都是1条,如果是表对表insert就比较难判断了。
霸王- 已标记为答案 KeFang Chen 2010年4月21日 1:52
-
感谢开心、络绎、Jimt200010的回答和指导。昨晚有事没来得及感谢大家。
我想用SQL查询新添加的行是否存在来确认是否添加成功,请问这样可行吗?我是说不会浪费机器资源吗?
新手学习,再学习......
你所说的这个可行,至于效率嘛就不敢苟同了。另外,对于add操作你可以如此来确认是否成功,对于update呢?或者对于add一个array呢?你所说的情形是可以的,只是仅仅能够解决你所说的而已。
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.executenonquery(VS.80).aspx
这是ExecuteNonQuery方法,可以了解下。
-