【问题标题】:How to add database query results to an array如何将数据库查询结果添加到数组
【发布时间】:2017-03-01 23:07:47
【问题描述】:

我正在尝试从 Access 数据库中选择字符串值,然后将它们放入字符串数组中,以便我可以对数组执行循环语句。

但是我不知道如何将查询结果放入数组中。我知道如何查询数据库,但我只需要如何将结果放入数组中。

我的选择语句是Select motonum from moto。我想将motonum 放入一个数组中。

读取数据的整个代码是:

connect2()
If Not cnn2.State = ConnectionState.Open Then
    'open connection
    cnn2.Open()
    'MessageBox.Show("chk2")
End If
cmd5.Connection = cnn2
cmd5.CommandText = "Select motonum from moto"
myData5 = cmd5.ExecuteReader
While myData5.Read
    'code to return results here
End While`

【问题讨论】:

    标签: arrays vb.net


    【解决方案1】:

    根据您项目的实际需求,有多种不同的方法可以解决此问题。首先,我会问你是否真的需要一个字符串数组作为返回类型。在大多数情况下,数组不如 List(Of String) 或其他实现 IEnumerable 的类型有用。

    这里有两个选项,都涉及到 List(Of String)。但是,将 List 返回给调用者,然后调用者可以选择使用 List 类型的许多有用方法来处理数据:

    这是我推荐的方式:

    Public Function getListOfMotonum() As List(Of String)
        Dim SQL As String = "SELECT motonum FROM moto"
    
        Dim output As New List(Of String)()
    
        ' Set the connection string in the Solutions Explorer/Properties/Settings object (double-click)
        Using cn = New SqlConnection(Properties.Settings.[Default].MyConnectionString)
            Using cmd = New SqlCommand(SQL, cn)
                cn.Open()
    
                Try
                    Dim dr = cmd.ExecuteReader()
                    While dr.Read()
                        output.Add(dr("motonum").ToString())
                    End While
                Catch e As SqlException
                    ' Do some logging or something. 
                    MessageBox.Show("There was an error accessing your data. DETAIL: " & e.ToString())
                End Try
            End Using
        End Using
    
        Return output
    
    End Function
    

    这是一个使用此函数输出的简单代码示例:

    Private Sub PrintListToConsole()
        Dim MyMotonumList = Me.getListOfMotonum()
    
        For Each item As String In MyMotonumList
            Console.WriteLine(item)
        Next
    End Sub
    

    如果您的项目需要字符串数组,则方法可能会有所不同。您可以从同一个函数中返回一个字符串,只需稍作修改:

    ' Change the return type in the function signature:
    Public Function getArrayOfMotonum() As String()
        Dim SQL As String = "SELECT motonum FROM moto"
        Dim output As New List(Of String)()
    
        '  . . . Same Data Access code as above:
    
        ' Just use the .ToArray method of the List class HERE:
        Return output.ToArray()
    
    End Function
    

    或者,您可以在客户端代码中使用相同的方法,使用返回列表的原始函数:

    Private Sub PrintArrayToConsole()
        Dim MyMotonumArray = Me.getArrayOfMotonum()
    
        For Each item As String In MyMotonumArray 
            Console.WriteLine(item)
        Next
    End Sub
    

    从您的函数返回列表提供了一种更灵活的返回类型,以及许多有用的方法。

    作为旁注,请允许我在消耗数据访问资源时推荐 Using 块。这将为您处理 Connection 和 Command 对象的正确拆卸和处置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多