问题标签 [sqldatareader]

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 投票
6 回答
300766 浏览

c# - 如何在 C# 中使用 SqlDataReader 获取行数

我的问题是如何使用SqlDataReaderC# 获取查询返回的行数。我已经看到了一些关于此的答案,但没有一个明确定义,除了一个声明使用Read()方法执行 while 循环并增加计数器的答案。

我的问题是我试图填充一个多维数组,第一行是列标题名称,之后的每一行都是行数据。

我知道我可以将内容转储到 List 控件中而不用担心,但是为了我自己的个人启迪,我还想在选择时将数据拉入和拉出数组并以不同的格式显示。

所以我认为我不能执行Read()然后递增 ++ 的方式,因为这意味着我必须打开Read()然后Read()再次打开才能获取行数和列数据。

只是我正在谈论的一个小例子:

然后一个 for 循环遍历列并弹出

0 投票
3 回答
1365 浏览

c# - 在 n 层中保持 SqlDataReader 打开

我有一个抽象 SqlCommand 的 ExecuteNonQuery() 和 ExecuteReader() 的数据库类。由于使用块包装了 Sqlconnection 和 SqlCommand,调用 CustomExecuteReader() 后 SqlDataReader 被关闭,因此我无法在业务层读取 SqlReaderResultSet。代码如下。谢谢大家的反馈。

0 投票
2 回答
6841 浏览

c# - ADO.Net DataReader 超时问题

我正在使用 ADO.Net + C# + VSTS 2008 + ADO.Net 连接到 SQL Server 2008 Enterprise。我使用的几乎与此处提到的模式/示例相同——使用 ADO.Net DataReader 逐个条目(行)检索数据。

http://msdn.microsoft.com/en-us/library/haa3afyz.aspx

我的问题是,如果我在此示例中设置 SqlCommand 超时,1. 我认为超时适用于我们可以用作最大值来检索一个特定行的时间,而不是整个数据逐项输入的总超时环形?

顺便说一句:循环我的意思是,

2. 这个超时只与从数据库中检索数据条目所需的时间有关,而这个超时与我们处理每个条目的时间无关(例如,如果我们将超时设置为 20 秒,如果它需要 1秒从数据库中检索一个数据条目,我的应用程序逻辑需要 30 秒来操作数据条目,永远不会发生超时)。

正确理解?

0 投票
1 回答
12130 浏览

.net - SqlDataReader.Read() 总是返回 false

我有以下情况:

所以,如果reader包含有效的结果和HasRows == true,那么reader.Read()应该返回 true,对吗?

好吧,它不适合我。我不知道发生了什么,因为这Hydrate(out entity, reader);条线永远不会被击中。

有人可以帮我理解吗?

谢谢!

0 投票
1 回答
1308 浏览

c# - 没有结果返回给读者,但相同的查询通过 SQL Management Studio 工作

我在使用一些全文搜索查询时遇到了奇怪的行为,尤其是那些包含多个单词的查询。这些在通过 Management Studio 执行时工作正常,但在从代码调用时不返回任何结果。我做了一个 SQL 跟踪来查看从我的应用程序发送了哪些命令,并且在从 Management Studio 执行时会出现完全相同的命令,但在使用 ExecuteReader 方法从我的应用程序调用时没有结果。

这个电话:

将返回我的应用程序和 Management Studio 的数据,同时执行以下命令:

仅在从 Management Studio 执行时返回数据。我直接从跟踪日志中复制/粘贴了这些查询。

在代码方面,我使用的是企业库,但总的来说我的数据库调用非常简单:

在第二种情况下,由于某种原因,dataReader.HasRows 为 false,但同样,当从 Management Studio 执行这些查询时,它们都会返回一些数据。

我认为这可能是由于返回了许多行(第二个查询返回了更大的结果集),但随后成功地测试了单个单词搜索并返回了更多行。

任何想法为什么 DataReader 的行为与简单的 Management Studio 查询执行不同,我们将不胜感激。

谢谢,

安东宁

0 投票
2 回答
1338 浏览

sqldatareader - 与实现 IDatareader 的阅读器相比,使用 SQLDataReader 的优势?

如果我使用 SQL Server >= 2005,使用 SQLDataReader 与仅实现 IDatareader 的阅读器相比有什么优势?

SQLDatareader 是否只是有更多功能可供选择,还是使用 SQLDatareader 可以提高性能?

任何讨论此问题的文章将不胜感激。

谢谢!

克里斯

0 投票
3 回答
18607 浏览

c# - 与此命令关联的必须先关闭的 DataReader

我收到以下错误;

“已经有一个打开的 DataReader 与此命令关联,必须先关闭它。”

是因为我在 foreach 循环中使用了阅读器吗?或者问题可能是什么?问候 BK

0 投票
2 回答
485 浏览

asp.net - VB.net / C# 不要在客户端部分引用 sqlreader 那么在哪里?

假设我有一个包含 5 个文本框的表单,我需要从数据库中提取一些数据,然后使用该数据设置这 5 个文本框。

所以假设我有 3 个基本层:

  • default.aspx 页面背后的代码

  • 联系 DAL 的 BLL 类

  • 和数据访问层 (DAL)

但是我听说过 default.aspx 页面不应该知道 sqldatareader,实际上您可能不想将 sqlclient 命名空间添加到 default.aspx 代码隐藏页面。

所以我曾经做过这样的事情:

然后 BLL 将简单地调用 DAL 以调用 SQL Server 中的存储过程并执行 CommandObject.ExecuteReader,将结果传递回 BLL,然后 BLL 将其发送到 default.aspx 的代码隐藏页面。

如果这没有意义,我可以提供完整的源代码。我的问题是,如果 default.aspx 实际上声明并知道 SQL 数据读取器是不好的,那么更好的方法是什么?我应该使用什么数据类型来避免在我的接口代码中使用 sqldatareader?

0 投票
3 回答
803 浏览

vb.net - 使用 FlexGrid 填充数据时 DataTable 和 SqlDataReader 之间的性能问题

当我尝试使用 VB.NET 将数据填充到 FlexGrid 中时,DataTable 和 SqlDataReader 之间哪个更快?

0 投票
2 回答
2454 浏览

c# - SqlDataReader,一个 firehose 游标 - 没有缓冲?

所以我知道 SqlDataReader 非常快,你不知道你会得到多少行,它一次只为每一行分配内存。因此,如果我有一百万行小行(比如 4 到 32 个字节),每行读取意味着往返服务器?没有缓冲发生对吗?

如果我通过 SQL Native Client 使用 ODBC,我可以设置一个适当大的行缓冲区,以便每次往返获取 512 行。当消费者读取第 0 行时,我读取 512 行然后返回第 0 行,接下来的 511 次读取是内存访问,第 513 次读取是新的往返。

对我来说,这应该更快(并且不必只转发),但是它也取决于结果集如何在服务器上实现。在后一种情况下,结果集必须在我开始通过网络获取之前完成,但对于我不熟悉的 SqlDataReader 和 TDS 可能不是这种情况(?)。任何意见表示赞赏。