异步填充DataTable?

2024-02-28

我在 .NET Core 2.0 应用程序中有以下功能。

public DataTable CallDb(string connStr, string sql)
{
    var dt = new DataTable();
    var da = new SqlDataAdapter(sql, connStr);
    da.Fill(dt);
    return dt;
}

如何将其转换为异步函数?

public async Task<DataTable> CallDb(string connStr, string sql)
{
    var dt = new DataTable();
    var da = new SqlDataAdapter(sql, connStr);
    da.Fill(dt); // No FillAsync to await?
    return dt;
}

我需要使用DataTable因为sql可能会返回具有不同模式的数据。有更好的方法来处理动态模式吗?


SqlDataAdapter从未更新以包含方法的 TPL 版本。你可以这样做:

await Task.Run(() => da.Fill(dt));

但这将创建一个没有任何用处的线程。

一个好的方法是使用这样的东西:

public async Task<DataTable> CallDb(string connStr, string sql)
{
    var dt = new DataTable();
    var connection = new SqlConnection(connStr);
    var reader = await connection.CreateCommand().ExecuteReaderAsync();
    dt.Load(reader);

    return dt;
}

当然,也有一些改变,比如using应作出陈述。但是,您在这里以正确的方式使用异步调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步填充DataTable? 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 如何在 Entity Framework Core 中按周分组?

    在实体框架 6 中我可以使用SqlFunctions DatePart http msdn microsoft com en us library dd487171 aspx method var byWeek data GroupBy x
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • 仅当行数低于限制时 Postgres 才插入行

    我希望在 Postgres 10 中有一个 SQL 语句或函数 允许我仅在行数少于一定数量的情况下插入行 select count from mytable where mykey 1 do the following only if th
  • 如何将 SQlite 中的数据显示到 iPhone 应用程序的表视图中

    我正在 Xcode 4 3 中使用 SQlite3 开发 iPhone 项目 SQlite 和 Xcode 之间的连接已完成 现在我想将我的数据显示到表视图 三个视图 中 并且它是只读的 所以我有主表视图 选择原始 gt 进入第二个视图并从
  • 使用 Vagrant 管理开发和生产环境?

    人们如何使用 vagrant 最好来自同一个 vagrantfile 处理开发 生产环境的简单自动化 使用 puppet 我试图解决的用例 如果没有创建的话 我很乐意用 vagrant 来启动生产机器 如果在我的开发环境的 puppet 文
  • 直到阈值为止的数字列表的总和

    我有一个整数列表 我想要对其进行求和 直到满足阈值 然后能够访问达到阈值的索引 就像是 summing lt function i sum sum list i index i while sum lt thresholdValue sum
  • HTML5 视频 - 设置 video.currentTime 会破坏播放器

    我正在尝试与 Chrome 中的第三方 html5 视频播放器进行交互 我能够因此获得对它的有效引用 document getElementsByTagName video 1 以及readyState是 4 所以一切都很好 我可以成功 并
  • Gradle - 排除配置的依赖关系,但不排除继承配置的依赖关系

    使用 Gradle 1 0 里程碑 8 我的项目使用 slf4j Logback 进行日志记录 因此我想防止 log4j 上的任何传递依赖项污染我的类路径 因此 我添加了全局排除 如下所示 configurations all exclud
  • 定义自定义颜色变量

    我想在我的代码中全局更改一些按钮颜色 我似乎无法找到一种定义颜色变量然后为该变量分配颜色值的方法 我试过这个 颜色 SelectedColor new Color f1 setBackgroundColor Color rgb 0 0 10
  • C# 以编程方式执行 TNSPing

    是否可以以编程方式在 Oracle 数据库上执行 TNSPing 我知道我可能可以调用 TNSPing 程序并解析生成的任何输出 但我正在寻找一种更强大的方法来处理数据库 TNS Ping 看过了平级 http msdn microsoft
  • 为什么 String 的 format(Object...args) 定义为静态方法?

    我想知道为什么Java5 及以上版本提供了使用 String 类中的静态方法的 printf 样式格式化程序 如下所示 public static String format String format Object args 代替 pub
  • 如何在 ASP.Net 应用程序上使用 salting+hashing?

    我正在从头开始构建一个项目 并且我想以正确的方式做事 我在网上读过有关哈希的内容 这基本上就是将密码转换为 64 个字母的繁文缛节 对吗 腌制怎么样 我的问题是 如何使用 C 对字符串进行哈希处理 MSSQL 中的字段声明类型是什么 nva
  • MVC HTML5 电子邮件标签

    我有一个模型 Required ErrorMessage Email required DataType DataType EmailAddress ErrorMessage Please enter valid email address
  • PowerPoint VBA 中的睡眠/等待计时器不是 CPU 密集型的

    我目前正在制作一个 PowerPoint 演示文稿 该演示文稿在计算机上用作某种信息亭或信息屏幕 它从磁盘上的文本文件中读取文本 该文本文件中的文本显示在 PowerPoint 的文本框中 并且每 5 秒刷新一次 这样我们就可以编辑 Pow
  • 从查询引用子表单

    在 MS Access 2010 中 我有一个查询 它在条件中引用了以下内容 Forms frm Add Item Subform ActiveControl Caption 这使我可以在查询中使用按钮的 标题 文本 以下代码位于 Butt
  • 将触摸和手势转发到 UIScrollview 的视图

    我在转发手势和触摸时遇到一些问题 我玩了很多次 但我无法让它按照我想要的方式工作 基本上我想用 2 个手指控制双屏幕上的滚动视图 并将其他所有内容转发到重叠滚动视图后面的 ipad 视图 为了能够控制双屏上的滚动视图 我进行了子类化UISc
  • 如何将包含 7 位毫秒数的日期字符串转换为 Python 中的日期

    当毫秒有 6 位数字时 f 有效 但如果超过 6 位数字 则会抛出错误 我有一个临时解决方案 将第 7 位硬编码为 0 但是有更好的方法吗 目前以下作品 print datetime datetime strptime 2014 11 19
  • ActiveAdmin - 如何在自定义操作中呈现默认模板

    我们在 Rails3 应用程序中使用 ActiveAdmin 作为默认模型 现在我们需要覆盖显示操作 OrderProcess 模型是瞬态 无表 模型 这意味着所有字段都是从其他数据聚合而来的 我们使用一个内部模块 它提供了必要的方法来模拟
  • 如何以缓存友好的方式访问灵活数组的数组?

    I have records具有灵活的阵列成员 typedef struct record unsigned foo signed bar double number record 我有多个records与相同数量的numbers这样我就可
  • SignalR:加载集线器时出错

    Signalr 不加载我的集线器 SignalR Error loading hubs Ensure your hubs reference is correct e g 我正在打电话app MapSignalR in startup co
  • 未捕获的ReferenceError:未定义FileTransfer(使用cordova 2.7.0)

    我想使用FileTransfer从网络服务器下载文件 代码如下 function downloadFile url var fileTransfer new FileTransfer var uri encodeURI url var fi
  • 异步填充DataTable?

    我在 NET Core 2 0 应用程序中有以下功能 public DataTable CallDb string connStr string sql var dt new DataTable var da new SqlDataAdap