问题标签 [datareader]
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.
.net - 与 DataReader 一起使用时输出参数不可读
当使用DataReader
对象通过存储过程访问数据库(如 SQL Server)中的数据时,在执行之前添加到 Command 对象的任何输出参数在读取后都不会被填充。我可以很好地读取行数据以及所有输入参数,但不能读取输出参数。
.net - .NET DataTable 跳过 Load(DataReader) 上的行
我正在尝试使用以下内容填充 DataTable 以构建 LocalReport:
有一次,我注意到报告不完整,并且缺少一条记录。我更改了一些条件,以便查询将准确返回两行并且...惊喜:报告仅显示一行而不是两行。我试图调试它以找出问题所在,但我陷入了困境
当我注意到DataReader
包含两条记录但DataTable
仅包含一条时。偶然地,我ORDER BY
在查询中添加了一个子句,并注意到这次报告正确显示。
显然,DataReader 包含两行,但 DataTable 仅在 SQL 查询字符串包含时读取这两行ORDER BY
(否则它只读取最后一行)。谁能解释为什么会发生这种情况以及如何解决?
编辑:
当我第一次发布问题时,我说它跳过了第一行;后来我意识到它实际上只读取了最后一行,并且我已经相应地编辑了文本(当时所有记录都分为两行,当它实际上只显示最后一行时,它似乎跳过了第一行)。这可能是由于它没有唯一标识符来区分 MySQL 返回的行,因此添加ORDER BY
语句会导致它为每行创建唯一标识符。
这只是一个理论,我没有任何证据支持它,但我所有的测试似乎都得出了相同的结果。
dispose - SqlDataReader:在这种情况下,阅读器会被关闭吗?
我正在清理我继承的旧 .NET 1.1 项目中的 DataReaders。
之前的开发人员对数据访问层进行了编码,使得大多数 DAL 方法都返回 SqlDataReaders(因此将其留给调用者来正确调用 .Close() 或 .Dispose() 方法)。
但是,我遇到了一种情况,调用者没有捕获返回的 SqlDataReader (因此没有正确处理它)。请看下面的代码:
数据访问方法:
调用代码:
如您所见,调用方法没有接收/捕获返回的 SqlDataReader。那么会发生什么?那个 SqlDataReader 还在那里并打开吗?或者它会自动收集垃圾,因为没有任何东西可以解决它?
我想不出调试和测试的方法。如果有人有任何想法或建议,那就太好了。
c# - SQL DataReader 在循环中缺少一行
运行以下代码时,它会遗漏一行。当我执行 files.Count 时,它说有 4 行,但没有为第 4 行存储数据。当我从 SQL 管理器中运行存储过程时,它会返回所有 4 行和所有数据。有什么帮助吗?
c# - 如何模拟 System.Data.IDataReader 中的 GetValues() 方法?
如何模拟 System.Data.IDataReader 中的 GetValues() 方法?
这个方法改变了传递给它的对象数组,所以它不能简单地返回一个模拟值。
.net - 填充数据表时,datareader 比 dataset 快吗?
哪个会更快。
1)循环数据读取器并创建基于自定义行和列的填充数据表
2)或创建一个dataAdapter对象并只是(.Fill)一个数据表。
在动态创建数据表时,数据读取器的性能是否仍然适用?
c# - Datareader 在 VS 中未返回任何结果存储过程在 Sql Server 中返回多个结果集
我在从 Visual Studio 2008 中的数据读取器中检索结果时遇到问题。我在同一个数据库中存储了多个 Procs。我能够从那些不接收输入参数的值中检索值。但是,当我在带有输入参数的存储过程上使用 executreReader() 方法时,我得到一个空的数据读取器。在检查结果集合时,会出现消息“IEnumerable returned no results”。我很困惑,因为我可以在 sql server 中执行存储的过程并返回结果集。我以前能够从 Visual Studio 中的这些存储过程中检索行,但显然它只是有一天停止工作。
我尝试使用 dataadapter 用我的结果填充数据集,并使用 executereader() 方法获取 sqldatareader,但我仍然没有得到任何结果。也不会抛出异常。我的参数都已正确命名,但我应该能够在没有参数的情况下调用这些存储的过程,并让它返回一个未过滤的结果集。我当前使用的代码如下:
请帮忙!
.net - 检查 DataReader 中是否存在列或不使调试器在某些异常上中断
我的代码如下所示:
我不知道合并列是否会出现在数据读取器中,所以我这样做是为了检查。它工作正常(虽然有点骇人听闻)。
但是,当我附加一个调试器时,它会在抛出异常时中断。非常烦人。
有没有更好的方法来编写该代码?或者是否有一些 Visual Studio 方法告诉它忽略异常而不中断(但仅在此处;并非无处不在)。
c# - Strange results from OdbcDataReader reading Sqlite DB
This method returns some strange results, and was wondering if someone could explain why this is happening, and possibly a solution to get my desired results.
Results:
FileName = what I'd expect
FileSize = what I'd expect
Buffer = all bytes = 0
BytesRead = 0
BlobString = string of binary data
FieldType = BLOB (what I'd expect)
ColumnType = System.String
Furthermore, if the file is greater than a few KB, the reader throws an exception stating the StringBuilder capacity argument must be greater than zero (presummably because the size is greater than Int32.MaxValue).
I guess my question is how does one properly read large BLOBs from an OdbcDataReader?
c# - “参数数量与存储过程的值数量不匹配” System.Data.Common.DbCommand 细微差别
这可能是一个 sql server 数据库设置问题,但我不确定从哪里开始寻找。
我有一个存储过程:
调用存储过程的 C# 代码是:
C# 代码在生产环境中运行良好。在这里,dteSince将设置为 null,因为它不作为输入参数提供。
问题是当我在UAT环境中运行它时,它返回标题中显示的消息 -参数数量错误......
我可以通过将代码更改为:
该修复只是掩盖了代码如何在一个环境中失败而在另一个环境中正常工作的真正问题。
我已经删除并重新创建了存储过程,但没有运气。
技术使用 C# 2.0 和 Sql Server 2005。