问题标签 [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.

0 投票
3 回答
911 浏览

asp.net - ASP.net DataReader 执行技术

我是初学者。

我听说 DataReader 只能以只读方式工作,并且一次它会读取一条记录。假设当我执行以下代码时

gridview 如何填充所有记录?。由于阅读器每次读取都能够读取一行,我认为只有最后一行可供 GridView 显示。

0 投票
3 回答
5325 浏览

c# - Datareader 跳过第一个结果

我有一个相当复杂的 SQL 查询,它根据客户 ID 从数据库中提取不同类型的产品。它提取三种不同类型的产品,由它们的唯一标识符编号范围标识(即,ID 1000-1999 是一种产品,2000-2999 是另一种产品,3000-3999 是另一种产品)。

c.fldCustomer_ID 是我需要的唯一用户输入,当我在 SQL Server Management Studio Express 中对数据库运行此查询时,它运行良好。但是,当我在使用 C# for SharePoint 编写的 Web 部件中的 using 语句中包装它时,它不会返回它应该返回的第一行,而是返回一个空值。例如,如果在 SSMS 中我得到三个结果(例如,'1001'、'2008' 和 3045'),那么我的 datareader 将只返回两个结果,第一个结果为空值(即,'null'、'2008 ,' 和 '3045')。这是我在 C# 中的代码:

我们的 SQL 分析器显示,无论是通过 SSMS 还是从 Web 部件完成,都传递了相同的查询,除了使用的文字与参数不同。另外,如果我将参数更改为文字,我会得到相同的结果。与 SSMS 相比,C# 处理 SQL 查询的方式是否存在差异,或者我是否以某种方式错误地实现了它?

为了完整起见,这里是将数据从阅读器拉到下拉列表中的代码:

我完全被难住了,我非常感谢我能得到的任何帮助。

0 投票
5 回答
1551 浏览

c# - DataReader 何时变空?

我有以下代码:

当这块代码成功完成后,数据读取器(reader)变空了?是什么原因?之后我需要与这位读者合作。解决办法是什么?

0 投票
1 回答
2647 浏览

c# - Oracle DataReader 返回 1 行,但 Read 方法返回 false

我有一个基本的 sql 语句,它查找用户并返回一条记录,但是当我运行一段代码时,如果(myReader.Read())它返回 false。我单步执行了代码并检查了 reader 对象,它实际上包含一条记录。下面是代码。

sql: SELECT user_name, user_password, user_state FROM users WHERE users.user_id = 123

0 投票
1 回答
1486 浏览

c# - NpgSQLdataReader GetOrdinal 抛出异常.. 有什么办法吗?

我为我通常在项目的 DAL 中使用的一堆方法构建了一个围绕 NpgSQL 的包装器。其中两个,我通常用来直接从 DataReader 填充 DTO。通常在填充辅助方法中,我将实例化 DTO 并遍历将 Datareader 的数据映射到相应属性的属性。填充方法大部分时间都会生成。

由于我允许许多属性为空或使用 DTO 的默认值,因此我使用了一种方法来检查 dataReader 的数据是否对属性有效,然后再填写属性。所以我将有一个 IsValidString("fieldname") 和一个 DRGetString("fieldname") 方法,如下所示:

我的填充方法被委托给执行查询的任何方法,如下所示:

这在 NpgSQL pre 2.02 中工作得很好。. 当调用 GetOrdinal 方法时,如果 dataReader 中不存在该字段,我会简单地返回 -1。在 IsValidString() 中很容易返回 false 并直接跳到下一个属性。检查不存在的字段对性能的影响几乎可以忽略不计。

不幸的是,当字段不存在时,对 NpgSQL 的更改会使 GetOrdinal 抛出异常。我有一个简单的解决方法,我将代码包装在 try /catch 中并在 catch 中抛出 false。但是我能感觉到性能受到了打击,尤其是当我进入调试模式时。填写一长串需要几分钟。

据推测,NpgSQL 有一个可以添加到连接字符串(兼容性)的参数以支持此方法的向后兼容性,但我从来没有让它正常工作(由于连接字符串格式错误,我总是遇到异常)。无论如何,我正在寻找更好的解决方法的建议。有什么更好的方法可以从数据读取器中填充对象,甚至可以以某种方式解决异常问题?

0 投票
13 回答
43613 浏览

c# - 在 C# 中处理 DBNull

有没有更好/更清洁的方法来做到这一点?

0 投票
3 回答
5033 浏览

mysql - 从 vb.net 数据阅读器中的多个表中读取

我正在尝试从 mysql 中的两个表中读取:

- 但我得到这个错误:

这是整个代码:

- 有什么可以帮助解决这个问题的建议吗?甚至其他技术可以实现使用数据阅读器从两个表中读取数据的目标?

这是一个 winform,而不是一个 web 表单

0 投票
1 回答
916 浏览

database - 如何使用 DataReader 读取数据库记录并将其添加到 DataTable

我在 Oracle 数据库表中有一些数据(大约 400 万条记录),我想使用 ADO.NET 将其转换并存储在 MSSQL 数据库中。到目前为止,我使用(对于更小的表)DataAdapter 从 Oracle 数据库中读取数据并将 DataTable 添加到 DataSet 以进行进一步处理。

当我用我的大表尝试这个时,抛出了一个内存不足的异常。(我认为这是因为我无法将整个表加载到我的内存中):)

现在我正在寻找一种执行此提取/传输/加载的好方法,而无需将整个表存储在内存中。我想使用 DataReader 并读取 DataTable 中的单个 dataRecords。如果其中有大约 100k 行,我想处理它们并在之后清除 DataTable(再次获得可用内存)。

现在我想知道如何使用 ado.net 将单个数据记录作为一行添加到数据表中,以及如何完全清除内存中的数据表:到目前为止我的代码:

非常感谢您的回复!

0 投票
2 回答
163 浏览

.net - DataReader 的奇怪问题?

DataReader 遇到一个奇怪的问题。我将 OdbcClient 与旧版 rdbms 系统一起使用。

我正在向数据库发送以下命令。

但是在某些情况下,当我通过 DataReader 迭代它时,如下所示。

尽管我在数据库的 Col2 列中有值,但我将 Col2 值作为 DBNull 获得。我正确获取 Col1 和 Col3 的值。这种行为的可能原因是什么?

更新:如果我在调用 cmd.ExecuteQuery() 之前调用 cmd.Prepare(),则此问题已修复。请任何人都可以解释这种行为吗?

0 投票
3 回答
4072 浏览

c# - 在关闭连接之前关闭阅读器

您应该在关闭连接之前始终关闭 DataReader,还是可以只关闭连接?通过关闭连接是否有效地关闭了阅读器?

(这是针对 c#.net 3.5 的)

谢谢!