- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个存储过程,它有时会在 SELECT 语句后返回异常。例如:
BEGIN TRY
SELECT
EmployeeId,
EmployeeName
FROM dbo.abc
THROW 50000, 'exception occurs here', 16;
END TRY
BEGIN CATCH
THROW 50000, 'exception', 16;
END CATCH
我正在使用 ExecuteReaderAsync 方法读取数据。
如果有异常,我应该在申请中得到异常。例如:
using (var reader = await ExecuteReaderAsync())
{
while (reader.Read())
{
}
}
但我没有得到任何异常(exception)。
这是一个非常奇怪的行为。因为如果在 SELECT 之后我们有一些逻辑并且逻辑失败(例如,任何重要的 UPDATE 语句失败)时发生这种情况,那么这将导致应用程序的行为出现问题。
有人能帮我解释一下为什么会发生这种奇怪的行为吗。
最佳答案
这可能只是因为您在阅读器发现错误之前就将其放置了 - 它在流中比第一个网格晚。尝试做:
using (var reader = await ExecuteReaderAsync())
{
while (reader.Read()) { ... }
// consume any trailing pieces
while (reader.NextResult()) {}
}
第二个循环(通过 NextResult()
)确保 TDS 解析器消耗了整个结果。您可能还更喜欢使用 await reader.ReadAsync()
和 await reader.NextResultAsync()
,因为您显然处于 async
方法中在这里。
关于c# - 当存储过程返回结果集和异常时,ExecuteReaderAsync 不会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48807204/
我正在尝试使用异步模式来执行 SQL 命令并返回 DataTable。有人可以建议如何解决这个问题吗? 这是我的代码: private static async Task ExecuteAsy
我创建了一个 OracleUnitOfWork 和 Repository 类,如下所示: public class OracleUnitOfWork : IOracleUnitOfWork {
我有一个存储过程,它有时会在 SELECT 语句后返回异常。例如: BEGIN TRY SELECT EmployeeId, EmployeeName FROM dbo.abc
我有一个存储过程,如果没有错误,它可以返回 2 组结果。 第一组只是一个普通的select。 第二组包含错误代码和错误信息,这一组总是返回一行。由于没有错误,错误代码将为 0,错误消息将为空。 和 如
我正在使用 .NET Core 2.0。我有以下调用 IDbCommand.ExecuteReader 的函数 public async Task> ReadAllAsync( System.
我有这个由多个客户端进程共享的 SQL 服务器实例。我希望查询以尽可能少的时间完成。 假设一个调用需要从这个共享的 Sql Server 读取 1k 到 10k 条记录。我的自然选择是使用 Execu
我有以下函数,它允许我传入一个对象并用返回数据(如果有)填充该对象。 我修改了该函数,使其可以异步调用。 public static async Task MySQLReturnReader(stri
有一些文章表明异步数据库调用在 .NET 中不是一个好主意。 Should my database calls be Asynchronous? Should my database calls be
我需要通过 WebApi 从 Sql Server 流式传输 blob 数据。 我不想在 Web 服务器的内存中缓冲 blob 数据。 我有以下代码,但它不起作用 - 没有异常(exception)。
我是一名优秀的程序员,十分优秀!