在以下代码中,command是一个已经设置好的DbCommand:

using( var dataReader = command.ExecuteReader() /*The actual execution of the query takes relatively little time.*/ ) {
                while( dataReader.Read() ) {
                    // These are what take all of the time. Replacing them all with reader.GetValues( myArray ) has no impact.
                    val0 = dataReader.GetValue( 0 );
                    val1 = dataReader.GetValue( 1 );
                    val2 = dataReader.GetValue( 2 );
                }
            }

我目前处理的查询的大部分时间都花在了GetValue调用上.是不是每次调用GetValue都要往返数据库?看起来是这样,而且这似乎效率很低.正如代码所指出的,try 使用GetValues()一次性完成这项任务并没有什么不同.有没有办法一次把整排人都弄到手?更好的是,有没有一种方法可以一次性获得整个结果集?

谢谢你.

推荐答案

using (connection)
    {
        SqlCommand command = new SqlCommand(
          "SELECT CategoryID, CategoryName FROM dbo.Categories;" +
          "SELECT EmployeeID, LastName FROM dbo.Employees",
          connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        while (reader.HasRows)
        {
            Console.WriteLine("\t{0}\t{1}", reader.GetName(0),
                reader.GetName(1));

            while (reader.Read())
            {
                Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
                    reader.GetString(1));
            }
            reader.NextResult();
        }
    }

Database相关问答推荐

使用 prisma ORM 在我的迁移中手动添加触发器

从 GCP 机密管理器中读取 .DER 值并将其保存到 .DER 文件

在保持抽象的同时将格式化文本存储在数据库中

Spring DriverManagerDataSource vs apache BasicDataSource

数据库术语中的relation关系是什么意思?

函数到关系映射比对象到关系更容易吗?

安装 SQL Server Management Studio Express后提示:Cannot open user default database. Login failed.

苹果 ios 购买收据数据的可能最大长度是多少?

如何从 MySQL 行中修剪前导和尾随引号?

在默认路径下使用脚本创建数据库?

JOOQ 与Hibernate

在 Rails 中销毁/删除数据库

判断Android中的应用程序数据库中是否存在列

在内存中创建 SQLite 数据库

数据库 - 设计 Events事件表

将 .csv 文件导入 Android 中的 Sqlite

你如何记录你的数据库 struct ?

分离实体和被管理实体

Spring data : CrudRepository 的保存方法和更新

为什么实体框架连接需要元数据属性?