需要一次遍历 SQL 表行(表太大而无法使用适配器。填充)

2023-11-25

对我来说,阅读这样一个小型 SQL Server 2005 表很容易:

string cmdText = "select * from myTable";
SqlDataAdapter adapter = new SqlDataAdapter(cmdText, connection);
DataTable table = new DataTable();
adapter.Fill(table);

不幸的是,这种方法似乎将整个表加载到内存中,这根本不适用于我正在使用的巨大表。

我希望能够一次一行地遍历表,这样一次只需要将一行存储在内存中。大致如下:

foreach (DataRow row in rowIteratorObject)
{
  // do something using the row

  // current row goes out of scope and is no longer in memory
}

有点类似于使用 StreamReader 一次一行处理文本文件,而不是一次读取全部内容。有谁知道如何对表行执行此操作(或者,如果我找错了树,则有替代解决方案)?


您应该使用 DataReader:

using( var connection = new SqlConnection( "my connection string" ) ) {
    using( var command = connection.CreateCommand() ) {
        command.CommandText = "SELECT Column1, Column2, Column3 FROM myTable";

        connection.Open();
        using( var reader = command.ExecuteReader() ) {
            var indexOfColumn1 = reader.GetOrdinal( "Column1" );
            var indexOfColumn2 = reader.GetOrdinal( "Column2" );
            var indexOfColumn3 = reader.GetOrdinal( "Column3" );

            while( reader.Read() ) {
                var value1 = reader.GetValue( indexOfColumn1 );
                var value2 = reader.GetValue( indexOfColumn2 );
                var value3 = reader.GetValue( indexOfColumn3 );

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

需要一次遍历 SQL 表行(表太大而无法使用适配器。填充) 的相关文章

随机推荐

  • 选择不同的 mongodb C#

    我必须从简单的 mongo db 数据库中选择不同的记录 我有很多简单的记录 这些记录如下所示 word some text 我的代码很简单 const string connectionString mongodb localhost v
  • Java 8 - 如何访问封装为 lambda 的对象和方法

    在 Java 中 您可以 捕获 对象上的方法调用 作为 Runnable 如下例所示 稍后 访问 Runnable 的这个实例 是否可以实际访问 捕获的 对象和被调用方法的方法参数 如果可能 这可能需要通过反射来完成 例如 class So
  • 是否存在具有编程语言本地化版本的编译器?

    我经常想知道为什么非英语程序员在编程时被迫使用不同的语言 而提供一个可以用本地化版本替换关键字的 IDE 似乎很容易 为什么德国人不能使用 w hrend macht 循环 日本 德国 法国 西班牙 博茨瓦纳的程序员只是广泛使用宏 定义语句
  • 根据另一个向量对点向量进行排序

    我正在开发一个 C 应用程序 我有 2 个点向量 vector
  • 显示:表格与使用表格

    我想知道使用 CSS 显示属性来模拟一个非常简单的论坛系统的表格是否是一个好主意 我知道这不是一件好事 就像 2 年前那样 当时 IE 和其他浏览器可能不支持 display table table cell 等 但我认为现在所有浏览器都支
  • Keycloak 管理控制台无限期加载

    我有一个在 EKS 集群中运行的 Keycloak 服务器 我尝试将其配置为生产模式而不是开发模式 我已经设法让 SSL 与反向代理一起使用 但是当我进入管理控制台的登录页面时 它只是无限期地加载 这是我的配置 Dockerfile FRO
  • PHP 特征的 UML 表示

    我正在使用 Symfony2 Doctrine 创建项目并尝试实现特征 到目前为止 小型试用没有问题 但我通常在深入复杂项目之前先绘制 UML 类和序列图 据我所知 用于象征 PHP 特征 可以视为行为 的 UML 设计对象是什么 有什么干
  • Java Webservice 客户端 UsernameToken 相当于 PHP

    我有一个 PHP 构建的 Web 服务 它使用 UsernameToken 作为身份验证机制 我有可以访问此 Web 服务的 PHP 客户端代码 现在我需要在 Java 中执行此操作 也许你可以帮助我 可以使用以下 php 代码访问该服务
  • 静态方法是否共享其局部变量以及不同线程并发使用时会发生什么?

    C 问题 我试图确定是否可以使用静态方法 在该方法内它确实使用了一些局部变量 局部变量是否在该方法的使用中 共享 例如 如果从不同线程同时调用 使用静态方法会发生什么 一个线程是否会阻塞 直到另一个线程完成等 也许普遍的问题是 在线程应用程
  • 更改Delphi OpenDialog的目录

    该计划的一些背景 该程序使用选项卡式界面同时处理多个文件 我正在尝试更改 OpenDialog 的目录 因此每次调用打开文件时都会显示我当前正在处理的文件的目录 但即使我设置InitialDir对于文件的路径 它始终显示最后打开的文件目录
  • GlassFish 5.0 异常且端口 4848 无响应

    昨天我下载了 GlassFish 5 0 和 JDK9 当我尝试运行服务器时asadmin start domainGlassFish 发送给我例外 当我尝试使用 asadmin start domainAfter 时 我得到响应 远程服务
  • 获取 GridSearchCV 的标准差

    在 scikit learn 0 20 之前我们可以使用result grid scores result best index 以获得标准差 它返回例如 mean 0 76172 std 0 05225 params n neighbor
  • 睡眠模式和深度睡眠模式有什么区别?

    我想知道Android手机中的睡眠模式和深度睡眠模式有什么区别 以及当手机进入睡眠模式和深度睡眠模式时会有什么影响 请给我详细的答案 问候 皮克斯 正如有人在已删除的答案中所写 深度睡眠模式与休眠和启动时间没有任何关系 You should
  • 如何使用 svg/canvas 绘制不规则/手绘线?

    我想绘制一条可调整大小的垂直线 基于页面内容 但它似乎是手绘的 而不是直线 我目前正在考虑使用 SVG 或 Canvas 来实现这一点 该线将沿着我的网页的一侧延伸 因此需要在容器的顶部和底部之间可扩展 我怎样才能实现这个目标 那么你想画一
  • 如何引用数据框表达式中的多个列?

    写这个很笨拙 df a lt df b df c 有没有办法做到 相当于 with df a lt b c 我们可以用with command df a lt with df b c 另一种选择是使用attach 然而不推荐 attach
  • MATLAB 中的信号量和锁

    我正在开发一个 MATLAB 项目 希望有两个 MATLAB 实例并行运行并共享数据 我将调用这些实例MAT 1 and MAT 2 更具体地说 该系统的架构是 MAT 1按顺序处理图像 使用以下命令一一读取它们imread 并使用输出每个
  • C++11 与现有库/框架的兼容性

    我想知道一些我还没有找到令人信服的答案的事情 情况 带有一些库 例如 gtkmm 的系统在未启用 c 11 的情况下进行编译 启用 C 11 编译的应用程序 两者都使用相同的 GCC 版本 环境进行编译和链接 该应用程序对使用 std st
  • 使用静态向量时_Orphan_range崩溃

    在我的项目中 我使用静态对象的构造函数来收集指针 就像注册方法一样 很简单 没有魔法 但在开始时我遇到了崩溃 我无法解释这里发生了什么 在使用 MSVC 或 Clang 的 Windows 上可以重现崩溃 两者都使用 MSVC 标头 给出以
  • conda 环境是否可以访问“root”环境? (==系统包)?

    conda 中的 根 环境是什么 它只是一个 仅 使用系统包的环境吗 其他环境是否也使用系统包 我假设优先考虑它们的重复版本 或者我是否需要将所有软件包安装在我想要使用它们的环境中 有没有办法将其配置为选项 我安装了系统包 但在 conda
  • 需要一次遍历 SQL 表行(表太大而无法使用适配器。填充)

    对我来说 阅读这样一个小型 SQL Server 2005 表很容易 string cmdText select from myTable SqlDataAdapter adapter new SqlDataAdapter cmdText