我试图从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`
Run Code Online (Sandbox Code Playgroud)
根据项目的实际需要,有多种不同的方法可以解决这个问题.首先,我会问你是否确实需要一个字符串数组作为返回类型.对于大多数情况,数组不如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
Run Code Online (Sandbox Code Playgroud)
这是一个简单的代码示例,它使用了这个函数的输出:
Private Sub PrintListToConsole()
Dim MyMotonumList = Me.getListOfMotonum()
For Each item As String In MyMotonumList
Console.WriteLine(item)
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您的项目需要字符串数组,方法可能会有所不同.您可以通过几个小修改从同一函数返回一个字符串:
' 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
Run Code Online (Sandbox Code Playgroud)
或者,您可以在客户端代码中使用相同的方法,使用返回列表的原始函数:
Private Sub PrintArrayToConsole()
Dim MyMotonumArray = Me.getArrayOfMotonum()
For Each item As String In MyMotonumArray
Console.WriteLine(item)
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
从函数返回List提供了更灵活的返回类型,包含许多有用的方法.
作为旁注,请允许我在使用数据访问资源时推荐使用块.这样可以为您正确拆卸和处理Connection和Command对象.
| 归档时间: |
|
| 查看次数: |
31316 次 |
| 最近记录: |