【问题标题】:VB.Net Not populating array with db dataVB.Net 没有用数据库数据填充数组
【发布时间】:2018-03-30 05:41:17
【问题描述】:

我想用 mysql 数据库中的数据填充一个数组

这是我的代码

Dim DataBlob As String()
        Dim Count As Integer

        While READER.Read
            Count += 1
            Dim eName As String = READER(1)
            Dim eSname As String = READER(2)
            Dim eID As String = READER(0)

            DataBlob(Count) = eSname + eName

        End While

        Return DataBlob

但我没有看到任何东西被退回。可能是什么问题

注意:有一个警告说明:DataBlob is used before a value is assigned

【问题讨论】:

  • 数组不会像那样神奇地增长。您甚至根本没有真正在那里创建一个数组,但是,即使您有,您也不能只指定您想要的任何索引。数组必须有足够的元素才能使该索引有效。如果您想要一个可以动态增长的数组,请使用List(Of T),其中T 是您要存储在其中的项目的类型。在您的情况下,T 将是 String。然后,您可以调用Add 方法将项目添加到列表中。这是大多数初学者教程都会带您完成的非常基本的内容,因此我建议您完成一个。
  • 好的,你能帮帮我吗?我只想用数据库中的数据动态填充一个数组
  • 我已经帮你了。我告诉过你使用通用的List。您可以以与之后执行数组基本相同的方式使用它,即按索引获取和设置。如果你真的必须有一个数组,你可以在List 上调用ToArray 来获得一个。您不能真正从数组开始,因为它们无法调整大小并且您不知道提前需要多少元素。如果您确实必须使用ReDimArray.Resize,但通常应避免使用它们。 List(Of T) 的存在表现为动态数组,因此您应该在需要时使用它。

标签: mysql arrays vb.net function object


【解决方案1】:

如果你想使用一个数组,只需获取count 1st

Dim Count as integer=reader_count(0)  
Dim DataBlob(count-1) As String
'subtract 1 b/c array starts at zero
Dim i as integer=0
While READER.Read
        Dim eName As String = READER(1)
        Dim eSname As String = READER(2)
        Dim eID As String = READER(0)
        DataBlob(i) = eSname + eName
        i+=1
End While

另一种选择,如果你知道你的计数是有限的(假设你总是在你的阅读器中拉出世界国家,你可能只是高估了),那么当你完成后,你重新调整数组,但你必须使用保存。除非您处理的是小型数组,否则我不会这样做。

'there is no way the reader will return more than 500
Dim DataBlob(500) As String
While READER.Read
        Count += 1
        Dim eName As String = READER(1)
        Dim eSname As String = READER(2)
        Dim eID As String = READER(0)
        DataBlob(Count) = eSname + eName
End While
ReDim Preserve DataBlob(Count)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2017-03-19
    相关资源
    最近更新 更多