【问题标题】:How do I SELECT and store multiple rows of a database with the same ID using OLEDB Connection in VisualBasic如何在 VisualBasic 中使用 OLEDB 连接选择和存储具有相同 ID 的数据库的多行
【发布时间】:2022-01-13 00:35:00
【问题描述】:
    Private Sub GetAffectedTraits(ByVal QuestionIndex)
        NumberOfTraitsAffected = 0
        Dim IndexTracker As Integer

        Dim TraitsAffected(23) As String
        'Set all to Null value
        For i As Integer = 1 To 23
            TraitsAffected(i) = " "
        Next

        Dim Command As New OleDbCommand("SELECT [Affected Trait] FROM Sheet1 WHERE QuestionIndex=" & QuestionIndex & "", TraitValuesConn)
        DB_Reader = Command.ExecuteReader
        While DB_Reader.Read()
            TraitsAffected(IndexTracker) = DB_Reader("Affected Trait")
            IndexTracker += 1
        End While

        For i As Integer = 1 To 23
            MsgBox(TraitsAffected(i)) 'Does not include affected traits yet for some reason
        Next
    End Sub

在这段代码中,我试图从使用相同 ID(或 QuestionIndex)存储的数据库中选择并存储每个“受影响的特征”。我希望它们单独存储在 TraitsAffected 数组中。这是我目前正在尝试的,但它根本没有改变数组。我想坚持我一直在使用 OLEDB 连接的语法。

这是一份学术作业。

【问题讨论】:

  • 你刚刚在网上声明了TraitsAffected。为什么你认为你需要清空这些值?无论如何TraitsAffected(i) = " " 正在为每个元素添加一个空格而不是空值。你也忽略了索引 0。.net 中的数组是从零开始的。您的数组的元素索引为 0 到 23、24 个元素。

标签: sql vb.net visual-studio oledb


【解决方案1】:

如果您不确定受影响特征的数量,最好使用 List 而不是 Array。

检查以下代码,看看它是否适合您。

Private Sub GetAffectedTraits(ByVal QuestionIndex)
    Dim NumberOfTraitsAffected = 0
    Dim TraitsAffected As List(Of String) = New List(Of String)

    Using TraitValuesConn As OleDbConnection = New OleDbConnection("your connection string")
        TraitValuesConn.Open()

        Dim Command As New OleDbCommand("SELECT [Affected Trait] FROM Sheet1 WHERE QuestionIndex=" & QuestionIndex & "", TraitValuesConn)
        Dim DB_Reader = Command.ExecuteReader
        While DB_Reader.Read()
            TraitsAffected.Add(DB_Reader("Affected Trait"))
        End While
    End Using

    For Each value As String In TraitsAffected
        MsgBox(value)
    Next
End Sub

【讨论】:

  • 非常感谢,这解决了我的问题。
  • Commands 和 DataReaders 也需要配置,所以它们属于 Using 块。
  • 如果您发现需要更多信息来编写答案,理想情况下应该在问题下方的 cmets 中确定。但是,您总是可以写一个答案,然后在它下面添加 cmets。不过,最好不要在答案中添加此类评论,因为这不应该成为长期记录的一部分。
猜你喜欢
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 2018-06-03
相关资源
最近更新 更多