根据 DataReader 数据填充对象数组

Posted

技术标签:

【中文标题】根据 DataReader 数据填充对象数组【英文标题】:Populate an Array of Object Based on DataReader Data 【发布时间】:2010-06-30 19:41:23 【问题描述】:

我不确定如何正确表达我的问题,但我想实现这样的目标。

我有一个名为 Products 的类

public class Products

private ID as Integer

private Name as String

Public Property ProductID()
  Get
    Return ID
  End Get
  Set(ByVal value)
    ID = value
  End Set
End Property

在我的页后代码中,我从 SQL 命令中检索数据并将其放入数据读取器对象中。

我怎样才能声明这个类,以便我的数据阅读器中的每一行实际上都是所述类的一个实例?

例如:

Dim myProduct() as New Product
Dim intCnt as Integer 

While datareaderData.read()
  intCnt += 1
  myProduct(intCnt) = new Product
  myProduct(intCnt).ID = datareaderData("ID")
  myProduct(intCnt).Name = datareaderData("Name")
End While

当我这样做时,我收到一个错误“对象引用未设置为对象的实例。

我对这个很困惑。非常感谢任何提示。谢谢。

【问题讨论】:

【参考方案1】:

您应该使用 Arraylist 或 - 更好 - generic List(of Product)。 此外,我会 strongly recommend 在您项目的编译器设置中设置 Option Strict On。

Dim products As New List(Of Product)
While datareaderData.read()
    Dim nextProduct As New Product
    nextProduct.ProductID = CType(datareaderData("ID"), System.Int32)
    nextProduct.Name = datareaderData("Name").ToString
    products.add(nextProduct)
End While

【讨论】:

以上是关于根据 DataReader 数据填充对象数组的主要内容,如果未能解决你的问题,请参考以下文章

asp sql datareader如何把数据集转成json对象

类的数据成员为数组,怎么样根据键盘输入的数据顺序建立对象?

dataset 和 datareader对象有啥区别

SQL Server锁定的DataReader行为

使用 SQL Server 锁定的 DataReader 行为

2016-11-2坚持学习Day17通过反射自动将datareader转为实体info