C# 检查查询结果

C# 检查查询结果,c#,.net,sql-server,C#,.net,Sql Server,要检查执行的查询是否成功,在PHP中只需 $Result = mssql_query('SELECT * FROM myTable'); &检查“结果”是否为假 我的问题是.NET有没有这样简单的功能来检查执行的查询 成功了吗 我不想检查结果是否为null,因为如果它是insert语句,那么结果也将为null 从 mssql\u查询 Returns a MS SQL result resource on success, TRUE if no rows were returned, or FA

要检查执行的查询是否成功,在PHP中只需

$Result = mssql_query('SELECT * FROM myTable');
&检查“结果”是否为假

我的问题是.NET有没有这样简单的功能来检查执行的查询 成功了吗

我不想检查结果是否为null,因为如果它是insert语句,那么结果也将为null

mssql\u查询

Returns a MS SQL result resource on success, TRUE if no rows were returned, or FALSE on error.

在ADO.NET中,如果查询因错误而失败,则引发异常。

在ADO.NET中,如果查询因错误而失败,则引发异常。

如果使用ADO.NET且查询失败,则将引发异常。如果查询未成功,您可以检查结果(如果查询未找到填充请求的任何数据,则结果可能仍然为空)

如果使用ADO.NET且查询失败,则将引发异常。如果查询未成功,您可以检查结果(如果查询未找到填充请求的任何数据,则结果可能仍然为空)

除了其他人所说的内容(假设您使用的是ADO.NET),对于非SELECT查询,您可以检查
DbCommand.ExecuteOnQuery
的结果。这将提供受INSERT、UPDATE或DELETE语句影响的行数


例如,通过这种方式,您可以检查更新或删除中的WHERE子句是否“标识”了正确的行数。

除了其他人说的话(假设您使用的是ADO.NET),对于非SELECT查询,您可以检查
DbCommand.ExecuteOnQuery
的结果。这将提供受INSERT、UPDATE或DELETE语句影响的行数


例如,通过这种方式,您可以检查更新或删除“identified”中的WHERE子句正确的行数。

insert语句的结果为null…?如果返回值为false,您如何找出错误?有一个mysql\u错误函数google it。insert语句的结果为null…?如果返回值为false,您如何找出错误?有一个mysql\u错误函数google it。这太可怜了。不是吗思考?我的意思是PHP需要检查“Result”是否为false。在.net中,您必须使用try cache。我的意思是,如果我有10个单独的查询,我必须使用1个单独的try cache语句。如果Microsoft不支持.net,我怀疑任何人会使用它。我的意思是它不像JAVA那样安全,不像PHP那么容易,也不像python那么漂亮。@Jibin不,我不认为它是可悲的。ADO.NET完全按照它应该的方式处理错误-错误表示为异常,而非错误表示为异常。顺便说一句,除非您以一种非常不寻常的方式使用异常处理,否则您通常不必为每个语句使用单独的try..catch块。毕竟,“异常”被认为是“异常”的,整个程序很少有超过几个try..catch块(通常远高于数据访问层的级别)。你知道异常会传播,对吧?假设我们有一个删除查询。总是有可能需要的元组不在数据库中。另外,如果我们试图插入到一个唯一的字段中,元素可能已经存在。这意味着db返回一个错误。现在,如果我有10个这样的语句&我必须为每个语句打印适当的错误消息,这意味着我必须使用单独的try缓存。我遗漏了什么吗?@Jibin除非你想在第一条语句失败后继续下一条语句,否则你不需要在try..catch块中包装任何语句。异常将“中断”当前执行“路径”和“固有”到下一个更高级别的try.catch所在的位置(在您的场景中,您将正好有一个这样的try..catch块,它将“打印适当的错误消息”)。顺便说一句,执行多个相互依赖的SQL语句的典型习惯用法如下::
使用(DbTransaction tran=conn.BeginTransaction()){/*语句…*/tran.Commit();}
-异常跳过
提交
并自动回滚事务。在该块中没有try..catch。这太可怜了。你不这么认为吗?我的意思是PHP需要检查“Result”是否为false。在.net中,你必须使用try cache。我的意思是,如果我有10个单独的查询,我必须使用1个单独的try cache语句。如果微软ft没有支持.NET,我怀疑任何人会使用它。我的意思是它不像JAVA那样安全,也不像PHP那么容易,也不像python那么漂亮。@Jibin不,我不认为它是可悲的。ADO.NET完全按照它应该的方式处理错误-错误被表示为异常,而非错误。顺便说一句,你通常不需要有单独的try..catch blocks f或者每个语句,除非您以非常不寻常的方式使用异常处理。毕竟,“异常”应该是“异常”的,并且很少有超过几个try..catch块用于整个程序(通常远高于数据访问层的级别)。您知道异常会传播,对吗?假设我们有一个删除查询。所需的元组总是可能不在数据库中。此外,如果我们试图插入到唯一字段中,元素可能已经存在。这意味着数据库返回一个错误。现在,如果我有10条这样的语句,我必须打印相应的错误消息每一条语句的消息都意味着我必须使用一个单独的try缓存。我是否缺少任何内容?@Jibin除非您想在第一条语句失败后继续执行下一条语句,否则不需要将任何语句包装在try..catch块中。异常将“中断”当前执行的“路径”和“propragate”到下一个更高级别的try.catch所在的位置(在您的场景中,您正好有一个这样的try..catch块,它将“打印适当的错误消息”)。顺便说一句,执行多个相互依赖的SQL语句的典型习惯用法是:
使用(DbTransaction tran=conn.BeginTransaction()){/*语句…*/tran.Commit();}
-例外