问题标签 [dbdatareader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
743 浏览

c# - System.Data.Common.DbDataReader.ReadAsync 中的异步是什么?

我正在查看MS 参考中的 DbDataReader(也是 DbCommand)的代码,但无法弄清楚 ReadAsync() 方法中的异步是什么。

ReadAsync 方法只是调用 Read 方法并返回一个完整的任务。这不会像直接调用 Read 一样阻塞调用线程吗?

我在 DbCommand ExecuteReaderAsync 和其他方法中注意到了相同的模式。他们只是调用同步版本并返回已完成的任务。

我在这里想念什么?

更新:我没有错过任何东西,正如@PeterBons 很好地解释的那样(也在文档中)。我仍然不喜欢它,但这是我的问题。

0 投票
0 回答
1568 浏览

sql-server - DB_READER 的 SSMS 扩展表锁定超时

我有一个非常奇怪的问题。

如果具有publicdb_datareader访问权限的用户尝试在 SSMS 17.2 中扩展表,他们会收到Lock request time out period exceeded. (Microsoft SQL Server, Error: 1222)错误消息。

如果用户sysadmin执行相同的操作,则操作按预期工作。

我在 SSMS 扩展返回以下代码的表时运行了分析器。

如果我以管理员身份运行此代码,它会在不到一秒的时间内完成。但是,当具有db_datareader访问权限的用户运行它时,它需要 20 多秒才能执行。

可能是什么原因造成的?

编辑 1: @Dan Guzman 检查执行计划的建议是一个很好的建议。两个用户之间的执行计划是相同的,除了以下等待 db_datareader 用户:<Wait WaitType="LCK_M_SCH_S" WaitTimeMs="7868" WaitCount="1" />

对该数据库运行了一个大型 INSERT BULK 操作,但我不明白为什么锁会出现在一个用户而不是另一个用户上?

0 投票
0 回答
21 浏览

c# - hadoop DbDataReader.GetValue 获取错误的时间戳


我正在用C# 中的DbDataReader.GetValue查询一个 hadoop 集群。
问题是我在时间戳上得到了错误的值。
hdfs 文件中的值(以及通过配置单元查询时)是 1997-03-21 01:00:00
但是使用 DbDataReader.GetValue 我得到1997-03-21 00:00:00
1h偏移量。
知道可能是什么问题吗?

谢谢!

0 投票
1 回答
709 浏览

.net - DbDataReader 导致 OutOfMemoryException

我正在使用 DbDataReader (OracleDataReader) 类从 Oracle 数据库中读取数据。我在 Visual Studio 2010 中运行该程序,使用 64 位 Windows 10 Enterprise 笔记本电脑和 32GB RAM(20GB 免费),使用 .NET 3.5(升级到较新的 .NET 版本不是一种选择。应用程序本身是32 位应用程序(不是选择)。

代码看起来像这样:

堆栈跟踪:

我也多次跟踪此堆栈:

在这个测试用例中,我自己没有分配任何内存,我只是增加一个整数,但我仍然内存不足,这告诉我 DbDataReader 正在分配内存并且可能没有正确(或及时)释放它. 我试过手动进行垃圾收集,看看是否有帮助,但没有。我还研究了它崩溃的行是否包含太多数据并因此填满了剩余的内存,但这也没有加起来,因为在崩溃之前从其他行读取了更多的数据(并被丢弃) .

非常感谢任何想法/帮助,谢谢!

0 投票
0 回答
35 浏览

entity-framework-6 - 如何从具有实体框架的 DbDataReader 加载每个层次结构类型的表?

我尝试调用ObjectContext.Translate<T>where T 是 table-per-hierarchy 实体的抽象基类型。如果 DbDataReader 正在流回基础表的所有列,我认为此方法将能够通过读取鉴别器列为其构造适当的子类型,但它会引发异常,说明它无法实例化抽象基类型. 如果它正常运行,它将尝试构造派生的可区分类型而不是基本类型。

这是该方法中的一个错误,还是有其他方法可以从数据读取器中读回每个层次结构的表类型?我需要从存储过程(特别是具有多个活动结果集的存储过程)返回每个层次结构的表实体,并且我似乎无法找到一种合适的方法来转换结果,同时观察数据模型映射和每个层次结构的表类型。

0 投票
0 回答
110 浏览

c# - SQLite(.NET),8字节双精度转换为“无穷大”而不是插入的double.MaxDouble?

我正在使用 SQLite .NET 库来保存双打

这是我的伪代码

然后我做一个选择:

但是 d 的值是double.PositiveInfinity而不是double.MaxValue,这可能是什么原因造成的?

0 投票
1 回答
152 浏览

c# - 延迟执行返回sql查询结果

我有一个执行 SQL 语句的方法,它返回我的类的一个实例,ResultSet其中包含返回的行和列。我只想在调用者实际迭代结果时逐行读取数据。

为此,我尝试将 IEnumerable 传递给我的类的构造函数,但问题是 DbDataReader 实例在您尝试迭代实例的Rows属性时已经被释放ResultSet

我知道我可以将 DbDataReader 实例传递给我的类,而不是在Execute方法中处理它,但是我必须ResultSet一次性使用,如果可能的话,我想避免这种情况。我不确定我正在尝试做什么?

在执行之前查看了 using() { } 块 Disposes 内的 yield return 语句,但它并不完全相同,因为它不涉及一次性资源。

0 投票
2 回答
88 浏览

c# - 转换列表到 DBDataReader

如何将 a 转换List<Person> personListDBDataReader

在下面给出的代码中,我正在尝试批量插入personList. 我有大约 50 万条记录,该方法WriteToServer需要一个 DBDataReader,我有一个List<Person>. 我怎样才能转换List<Person>DBDataReader

\

0 投票
2 回答
93 浏览

sql-server - 使用具有 db_datareader 数据库角色的 SQL Server 帐户获取与特定数据库的当前连接数

我有一个在我的数据库 test_db 上设置了 db_datareader 数据库角色的帐户。

使用 SSMS 我使用此帐户(使用 SQL Server 身份验证)登录并打开一个新的查询窗口,以便通过执行以下查询来获取与 test_db 数据库的当前连接数:

其中 database_id = 6 对应于 test_db。

此查询返回单行而不是多行。

但是,从 SSMS 如果我使用没有设置 db_datareader 的另一个帐户(使用 Windows 身份验证)登录,如果我从 SSMS 打开一个新的查询窗口并键入上面指示的相同查询,我将获得与 test_db 数据库的所有当前连接(更多超过一排)。

为什么?我需要获取到 test_db 数据库的所有当前连接,而不仅仅是当前用户登录的单个连接(具有 db_datareader 数据库角色集的只读帐户)

0 投票
1 回答
126 浏览

c# - 将 GetFieldValueAsync 与 GetFieldType 中的类型一起使用

我有一个通用阅读器,我想将它从同步转换为异步。

原始代码是

没关系。我试图做的是

由于错误 CS0411 而无法正常工作

GetFieldValueAsync无法从用法中推断方法“ ”的类型参数。尝试明确指定类型参数。

我也尝试指定类型, Type t = DR.GetFieldType(i)但我也做不到await DR.GetFieldValueAsync<t>(i)

我在这里运气不好?

我应该在我的异步方法中恢复到以下阻塞代码吗?

是否有理论上的原因为什么没有DR.GetValueAsync(i)返回像同步对应对象这样的对象?

小记,题外话

如果有人坚持要知道我为什么要为十进制编写不同的代码,这就是问题所在