【问题标题】:vb.net get all rows from databasevb.net 从数据库中获取所有行
【发布时间】:2016-06-28 21:42:48
【问题描述】:

我正在开发一个项目(在 VB.net 中),其中包含一个包含产品信息的数据库、一个产品对象类、一个产品列表对象类和一个使用我的存储过程从中提取所有行的 DB 类数据库(每一行被构造成一个产品,产品被放入产品列表类中的一个数组列表中)。到目前为止它似乎工作正常,除了我的 DB 类中出现一个让我难过的错误。

 Dim TempList = New ArrayList
        Dim sqlDR As SqlClient.SqlDataReader = PDM.Data.SqlHelper.ExecuteReader(GLOBALS.ConnectionString, "sp_GetAllProducts")

        If sqlDR.HasRows Then
            While sqlDR.Read()
                Dim Prod As New Product
                Prod.PK_ProductID = sqlDR(0)
                Prod.MicrobeadStatus = sqlDR(1)
                Prod.FK_BrandID = sqlDR(2)
                Prod.FK_TypeID = sqlDR(3)
                Prod.FK_Product = sqlDR(4)
                Prod.PK_BrandID = sqlDR(5)
                Prod.BrandName = sqlDR(6)
                Prod.PK_Products = sqlDR(7)
                Prod.ProductName = sqlDR(8)
                Prod.PK_TypeID = sqlDR(9)
                Prod.Type = sqlDR(10)
                TempList.Add(Prod)
            End While
        End If

在此示例代码的第 5 行中,单词 Product(也称为我的 Product 类)表示我没有为任何参数指定参数。 PK_ProductID、MicrobeadStatus 等都被声明并与 Product 类中的构造函数放在一起。到目前为止,我一直在尝试的任何事情似乎都没有帮助。有什么想法吗?

【问题讨论】:

  • 听起来 Product 没有简单的无参数构造函数。为什么是 ArrayList 而不是 List(Of Product)?
  • MySql 或 Sql 他们是不同的。从您的命令的外观来看,您使用的是 Sql 而不是 MySql。如果是这样,请更新问题的标签。此外,如果使用 MySql,您为数据库使用了错误的类...还使用列名而不是索引,如果它们发生更改,您必须为此调整所有代码。

标签: sql database vb.net stored-procedures


【解决方案1】:

正如@Plutonix 在 cmets 中建议的那样,听起来Product 没有无参数构造函数。如果您的 Product 构造函数只有参数,那么您必须为每个参数提供一个参数,例如

Dim Prod As New Product(sqlDR(0), ...)

如果您希望能够在不提供任何参数的情况下创建实例,则必须声明无参数构造函数,例如

Public Sub New()
End Sub

【讨论】:

  • Dim Prod As New Product(sqlDR.GetInt32(0), sqlDR.GetString(1)...) 将编译参数是否输入(在 Option Strict 下)。
猜你喜欢
  • 2019-12-13
  • 2016-09-14
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
相关资源
最近更新 更多